gpt4 book ai didi

mysql - 如何从重复行中清空产品名称

转载 作者:行者123 更新时间:2023-11-29 02:09:06 25 4
gpt4 key购买 nike

你能帮我查询mysql吗?我想清空所有重复的产品名称并只保留一行(产品名称及其 SKU)。

我是这样写查询的。您能否确认语法是否正确

UPDATE tvcom_product t1 JOIN 
(SELECT name
FROM tvcom_product
GROUP BY name
HAVING count(product_id) > 1) dup ON t1.name = dup.name
SET t1.name = '' WHERE t1.sku != ''

最佳答案

UPDATE tvcom_product t1 
JOIN tvcom_product t2 ON t2.name = t1.name AND t2.sku < t1.sku
SET t1.name = ''

这将重置 name对于所有具有相同名称的重复项的记录。它只会留下一个具有最小(按字母顺序)SKU 的记录。而不是 t2.sku < t1.sku你可以写t2.id < t1.id - 应该更优化,它会遗漏 ID 最小的记录。

Upd. 这是最简单但不是最佳的方法。对于大表,这个应该更好用:

UPDATE tvcom_product t1 
JOIN (
SELECT name, MIN(id) id
FROM tvcom_product
GROUP BY name
HAVING COUNT(*) > 1
) t2 ON t1.name = t2.name AND t1.id != t2.id
SET t1.name = ''

如果你想进一步优化它,那么你应该将子查询存储在一个单独的表中并加入它。当然id在这个查询中可以用 sku 改变.

关于mysql - 如何从重复行中清空产品名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58967815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com