仅选择具有两个值的人员

时间:2014-03-25 22:05:11

标签: sql select

我有一个包含2列的表:

ClientID | PhoneType
    1    |  4
    1    |  4
    1    |  5
    2    |  4
    3    |  5

我正试图让查询只显示拥有这两种手机类型的客户端。 因此输出应该只显示客户端ID 1

正如您所注意到的,客户端1有两种类型'4'PhoneTypes,所以我试图不使用GroupBy / HavingCount方法来缩小结果范围。这是我能找到的唯一例子。

2 个答案:

答案 0 :(得分:2)

像...一样的东西。

SELECT x.ClientID
FROM (
   SELECT DISTINCT ClientID, PhoneType FROM [Table A]
) AS x
GROUP BY x.ClientID
HAVING COUNT(x.PhoneType) = 2

如果客户端有2个或更多相同类型的手机,则使用DISTINCT从COUNT中删除重复项。

答案 1 :(得分:0)

我目前无法访问SQL Server,但您似乎应该能够使用以下内容,这比Gavin的答案要简单一些:

SELECT ClientID
FROM [Table A]
GROUP BY ClientID
HAVING COUNT(DISTINCT PhoneType) = 2

不完全确定HAVING中的计数是否有效,但我不明白为什么它不会...