T-SQL Two Where子句在同一列上

use*_*628 3 t-sql sql-server where-clause

在SQL Server 2008中,我有下面的表示例.

Name   Num
----------
John    20
John    30
Peter   10
Peter   20
Peter   30
Marry   20
Marry   30
Mike    10
Mike    20
Mike    30
Phil    10
Phil    30
Run Code Online (Sandbox Code Playgroud)

我想要Num = 10和Num = 20的记录.查询将返回

Name   Num
----------
Peter   10
Peter   20
Mike    10
Mike    20
Run Code Online (Sandbox Code Playgroud)

非常感谢.

Cad*_*oux 6

你想要这样的东西:

SELECT Name, Num
FROM tbl
WHERE Name IN (
    SELECT Name FROM tbl
    WHERE Num IN (10, 20)
    GROUP BY Name 
    HAVING COUNT(*) = 2 -- Must have all items in the set of 2
)
AND Num IN (10, 20) -- still need to restrict, since the set is not maximal
Run Code Online (Sandbox Code Playgroud)

但是还有其他方法可以将"具有以下所有属性的项目集"设置为"猫".