让我们说在几个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 |
+------+------+
答案 0 :(得分:2)
select t1.* from
(select col1,count(*)
from table1
group by col1
having count(*) > 1) t2
join table1 t1 on t1.c1 = t2.c1
在找到>的计数后,您应该使用外部查询。 1。
答案 1 :(得分:1)
SELECT * FROM Table1 WHERE Col1 IN (
SELECT Col1 FROM Table1 GROUP BY Col1 HAVING COUNT(Col1) > 1
);
答案 2 :(得分:0)
你应该使用这个而不是那些:
select Col1, Col2
from Table1
sort by Col1
having (count(*) > 1)