繁体   English   中英

查找表中的不一致

[英]Finding inconsistency in the table

可以说,在几个SELECTJOIN之后的某个时刻,我得到以下结果:

  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
);

http://sqlfiddle.com/#!9/8de26/2

您应该使用这个而不是那些:

select Col1, Col2
from Table1
    sort by Col1
    having (count(*) > 1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM