我的这个表包含3个字段:
ProductA ProductB Count
XX CC 2
CC XX 2
ZZ XX 3
XX ZZ 3
我必须执行sql查询,这允许我删除重复的行,即行XX CC 2和CC XX 2是两个重复的行,因为它们是同一对产品。
因此查询的结果必须如下:
ProductA ProductB Count
XX CC 2
ZZ XX 3
答案 0 :(得分:0)
您可以使用GREATEST/LEAST
来处理对:
SELECT DISTINCT GREATEST(ProductA, ProductB), LEAST(ProductA, ProductB), cnt
FROM tab
<强> DBFiddle Demo 强>
答案 1 :(得分:0)
此答案假定每行都有重复项,如样本数据中所示。有了这个假设,SQL非常简单。如果放宽这个假设,查询会有点复杂。
要获得所需的结果,您可以使用:
select t.*
from t
where productA < productB;
要删除多余的记录,这适用于您的样本数据:
delete from t
where productB > productA;
如果这是查询生成的结果集,则可能会对查询进行简单的调整以解决问题。
答案 2 :(得分:0)
以下答案由@ lad2025提供:::
获取重复的产品:
select distinct greatest(producta,productb) p1,least(producta,productb) p2,count from tab3;
删除重复的产品对:
delete from tab3
where (producta,productb)
not in (select distinct greatest(producta,productb) p1,least(producta,productb) p2 from tab3);