Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 从SQL表中删除重复字符_Mysql_Sql - Fatal编程技术网

Mysql 从SQL表中删除重复字符

Mysql 从SQL表中删除重复字符,mysql,sql,Mysql,Sql,我的表有两列 Cust1 Cust2 A B C A A C C D B A D C 我们需要删除这些重复项并只保留一个组合 因此,输出可以是 Cust1 Cust2 A B A C C D 或 选择独特的组合: SELECT DISTINCT LEAST(Cust1, Cust2) Cust1, GREATEST(Cus

我的表有两列

Cust1    Cust2
A         B
C         A
A         C
C         D
B         A
D         C
我们需要删除这些重复项并只保留一个组合

因此,输出可以是

Cust1  Cust2
A       B
A       C
C       D


选择独特的组合:

SELECT DISTINCT LEAST(Cust1, Cust2) Cust1,
                GREATEST(Cust1, Cust2) Cust2
FROM source_table
删除“重复项”(假设不存在完全重复的行,按值和顺序-它们不会被删除):


建议-通过
(最少(Cust1,Cust2),最大(Cust1,Cust2))
创建唯一索引,它将禁止重复插入。

如果在两个方向上都有对,那么最简单的方法是:

select t.*
from t
where cust1 < cust2;

这两个选项都可以修改以处理单例,但您的问题中没有示例。

所需的输出不能是“或”-它必须是确定性的。它可以是两个选项中的任何一个,字母的顺序无关紧要。最后的输出应该是只有两个LeTySyEP的组合,我想你需要决定哪一个,但也要认真考虑从数据库中删除数据是否正确。
DELETE t1.*
FROM source_table t1
JOIN source_table t2 ON (t1.Cust1, t1.Cust2) = (t2.Cust2, t2.Cust1)
WHERE t1.Cust1 > t1.Cust2
select t.*
from t
where cust1 < cust2;
delete t from t
    where cust1 > cust2;