这是我的查询,向我返回表gtin
中表gtin
的{{1}}的计数。
artikel
现在,我想重设表 SELECT g.gtin,
Count(a.gtin)
FROM artikel a
JOIN gtin g
where a.gtin IN (g.gtin)
GROUP BY a.gtin
HAVING count(a.gtin) > 1
中除一个以外的所有gtins。哪一个都没关系。最后,表artikel
中的每个gtin
在列gtin
的表artikel
中仅应使用一次。
答案 0 :(得分:1)
我认为您要确保在表artikel中没有重复的gtin值,并且这与对表gtin的引用无关。
如果您使用的是MySQL 8.0,则可以使用窗口函数轻松实现。像
update artikel set gtin = null
where row_number() over (partition by gtin) > 1
尚未测试,因此可能存在语法错误。
编辑:如果您的MySQL版本较低,则可以使用artikel_id
之类的一些区别属性从每个组中选择一行以保留其值:
update artikel as a
join ( select gtin, min(artikel_id) as chosen_id
from artikel group by gtin ) as b
on b.gtin = a.gtin and a.artikel_id <> b.chosen_id
set a.gtin = null;