如何在SQL中只获得整个表的单个列中相同值的条目?

时间:2013-04-11 00:52:24

标签: mysql sql

所以我坚持试图创建一个SQL来抓住每个具有相同值的特定COLUMN的ROW。

例:
                                                                                           表:买家

aID | bID                        aID | bID
 1  |  3                          1  |  3 
 1  |  4                          1  |  2
 1  |  2                          2  |  2
 1  |  5                          1  |  4    this one also should return aID = 1
                                       since aID =1 is present for every different bID

我想我很接近:

SELECT aID
  FROM buyers
 WHERE COUNT(bID) = (SELECT S1.aID
                       FROM buyers S1, 
                            buyers S2
                      WHERE S1.aID = S2.bID
                        AND S2.bID <> S1.bID)

它必须在列中的每一行中,或者如果一个aID不同则不要得到它,那么就不要得到它。 aID必须与每bID

匹配

2 个答案:

答案 0 :(得分:3)

SELECT aID
FROM buyers
GROUP BY aID
HAVING COUNT(*) = (SELECT COUNT(distinct bID) FROM buyers)

FIDDLE

这假设每个aID,bID组合都是唯一的。如果可以针对同一bID重复aID,则需要执行以下操作:

SELECT aID
FROM (SELECT DISTINCT aID, bID FROM buyers)
GROUP BY aID
HAVING COUNT(*) = (SELECT COUNT(distinct bID) FROM buyers)

答案 1 :(得分:0)

怎么样

Select Distinct aId 
From Table t
Where Not Exists
   (Select * From table i
    Where bId <> t.bId
       And Not Exists 
           (Select * From table
            Where bId = i.bId
              And aId <> t.aId))

这说:

显示aId的所有不同值,以便aId值不同的行都不包含bId值,因此甚至没有一行bId 1}}和aId相同。