[英]Finding inconsistency in the table
可以说,在几个SELECT
和JOIN
之后的某个时刻,我得到以下结果:
Col1 Col2
+------+------+
| 1 | 2 |
| 1 | 3 |
| 4 | 5 |
| 4 | 6 |
| 5 | 6 |
| 6 | 7 |
+------+------+
现在,我想查找“不一致”,即显示在Col1
中具有相同值但在Col2
中具有不同值的行。 如果在Col1
只有一个值出现,那么我根本就不想显示它。
我尝试过的
select Col1, Col2
from Table1
group by Col1
having (count(*) > 1)
它返回
Col1 Col2
+------+------+
| 1 | 2 |
| 4 | 5 |
+------+------+
预期结果:
Col1 Col2
+------+------+
| 1 | 2 |
| 1 | 3 |
| 4 | 5 |
| 4 | 6 |
+------+------+
select t1.* from
(select col1,count(*)
from table1
group by col1
having count(*) > 1) t2
join table1 t1 on t1.c1 = t2.c1
找到大于1的计数后,应使用外部查询。
SQL小提琴: http ://sqlfiddle.com/#!9 / 211a9e / 6
SELECT * FROM Table1 WHERE Col1 IN (
SELECT Col1 FROM Table1 GROUP BY Col1 HAVING COUNT(Col1) > 1
);
您应该使用这个而不是那些:
select Col1, Col2
from Table1
sort by Col1
having (count(*) > 1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.