我不知道如何编写一个只显示那些条目的简单sql语句 不止一次出现。
e.x。
NodeID Number
0 12
1 12
2 12
0 13
1 13
0 14
1 15
2 16
1 17
从表格中选择nodeID
,number
,其中不止一次出现的数字不同nodeID
结果:
NodeID Number
0 12
1 12
2 12
0 13
1 13
答案 0 :(得分:3)
SELECT a.*
FROM TableName a
INNER JOIN
(
SELECT Number
FROM TableName
GROUP BY Number
HAVING COUNT(*) > 1
) b ON a.Number = b.Number
另一种方法是使用EXISTS
SELECT a.*
FROM TableName a
WHERE EXISTS
(
SELECT 1
FROM TableName b
WHERE a.Number = b.Number
GROUP BY Number
HAVING COUNT(*) > 1
)
答案 1 :(得分:0)
试试这个
SELECT NodeID , Number FROM TableName WHERE Number IN
(SELECT Number FROM TableName GROUP BY Number HAVING COUNT(*) > 1)
答案 2 :(得分:0)
您还可以使用EXISTS
而不使用GROUP BY
:
SELECT nodeid,
number
FROM Table1 t1
WHERE EXISTS(SELECT 1
FROM Table1 t2
WHERE t1.number = t2.number
AND t1.nodeid <> t2.nodeid)
答案 3 :(得分:0)
我的第一个想法是像下面那样进行自我加入,但是由于分组后来发生了,所以它不会起作用。
SELECT T1.NodeId,T2.Number,COUNT(T2.Number)C 从表T1中 INNER JOIN表T2使用(编号) 在哪里C&gt; 1 GROUP BY T2.Number
因此,您必须先进行分组选择,然后进行连接:
SELECT NodeId, Number
FROM Table T1
INNER JOIN (
SELECT Number, COUNT(Number) C
FROM Table
WHERE C > 1
GROUP BY Number
) T2 USING(Number)