我有一个mysql表,其中包含分布在两列上的标识符:
left right
1 2
3 6
4 5
使用sql如何找出表中是否包含重复的标识符?
例如,上面的例子可以,但是下面的例子不可以:
left right
1 2 <--+
3 6 | Not OK
4 1 <--+
left right
1 2
3 3 <-- Not OK
4 5
left right
1 2
3 6 <--+ Not OK
4 6 <--+
法律上不允许我修改数据库中的任何内容,因此我的问题不是在模式中强制执行此操作,或者通过触发器或存储过程我不能修改数据库的模式,而是如何使用just select type操作进行检查。
如果是一个专栏,我会写 SELECT left FROM MyTable GROUP BY left HAVING COUNT(*) > 1;
但是对于两个专栏我不知道如何继续。。。
2条答案
按热度按时间ijxebb2r1#
如果left的任何值存在于right中,那么它是重复的,所以您可以使用子查询和
aggregate
功能http://sqlfiddle.com/#!9/ce69b8/2号
tvokkenx2#
使用
UNION ALL
要在一列中获取左右所有值,请执行以下操作: