是否可以编写MySQL查询来检查列组合的“单一性”?
目前我一直在尝试在phpmyadmin中的列上创建唯一键并查看它是否失败,这是因为很多原因并不理想。
查询可以让我找到那些列中具有重复值的行,甚至可以计算导致组合不唯一的行数。知道有多少套不同的重复值也很好。
检查列b,c
的示例a|b|c
-----
1|2|3
4|1|3
1|2|9
上面没有上面的行返回,即使b中的两个值相同而c中有两个值相同。
a|b|c
-----
1|2|3
4|5|6
7|2|3
7|5|6
将返回所有行,或者查询可以返回集2 | 3和5 | 6。
答案 0 :(得分:6)
使用select
和group by a,b,c
的{{1}}查询会显示与其他行重复的行。要查看唯一行,您可以将having count(*) > 1
子句更改为having
。
如果您想检查having count(*) = 1
的哪些组合是唯一的,您可以
b,c
例如,要查找重复的select b,c
from t1
group by b,c
having count(*) = 1
组合,您可以执行以下操作:
a,b,c
答案 1 :(得分:0)
您最好像这样创建唯一的表,然后重命名为您希望:
CREATE TABLE table_unique AS
(SELECT a,b,c FROM table GROUP BY a,b,c HAVING COUNT(*)=1);