sql-server - T-SQL 同一列上的两个Where 子句

标签 sql-server tsql 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

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

Name   Num
----------
Peter   10
Peter   20
Mike    10
Mike    20

非常感谢。

最佳答案

你想要这样的东西:

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

但是还有其他方法可以给“具有以下所有属性的项目集”猫换皮。

关于sql-server - T-SQL 同一列上的两个Where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4382462/

相关文章:

sql-server - Microsoft Reporting Services 和 CSV 文件

sql - 关键字 SQL Server 存储过程

c# - EF 启动速度极慢 - 15 分钟

sql - 如何获取未在目标日期运行的天数

sql-server-2008 - 在 SQL Server 中完成 MYSQL 的 Group_Concat

MySQL 左连接 : null elements be filtered by where

Mysql WHERE IN 映射

sql - 替换存储在 SQL Server 数据库列中的 XML 中的节点名称

sql-server - 1/1/1753 在 SQL Server 中有何意义?

sql - 如何过滤 where 子句中的复合键?