选择具有多个条目的字段

时间:2013-04-20 11:12:22

标签: mysql sql

我不知道如何编写一个只显示那些条目的简单sql语句 不止一次出现。

e.x。

NodeID  Number

0       12
1       12
2       12
0       13
1       13
0       14
1       15
2       16
1       17

从表格中选择nodeIDnumber,其中不止一次出现的数字不同nodeID

结果:

NodeID  Number
0       12
1       12
2       12
0       13
1       13

4 个答案:

答案 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) 

DEMO

答案 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)