SQL - 如何选择具有相同多个值的行

标签 sql sql-server select

我将从表格的简化示例开始:

+-----+----------+
|Name |Teaches   |
+-----+----------+  
|Dave |Science   |
+-----+----------+  
|Dave |History   |
+-----+----------+  
|Alice|History   |
+-----+----------+  
|Alice|Literature|
+-----+----------+  
|Alice|Science   |
+-----+----------+  
|John |History   |
+-----+----------+

我正在尝试选择那些与戴夫教授相同类(class)的人。 (在这种情况下,爱丽丝)。我正在考虑使用光标浏览 Dave 的类(class),选择教授同一类(class)的人员并交叉结果,但我想知道是否有更好(更简单)的方法。

最佳答案

这是一种方法:

select t.name
from t join
     t td
     on td.teaches = t.teaches 
where td.name = 'Dave'
group by t.name
having count(*) = (select count(*) from t where t.name = 'Dave');

关于SQL - 如何选择具有相同多个值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48179515/

相关文章:

c# - 使用 Where 子句在 DataTable 的列中查找最小/最大值?

mysql - 用sql查询总结frags和group team

mysql - 如何以我想要的格式获取表结果 MYSQL

mysql - SQL Server 中的 COALESCE 与 MySQL 中的 COALESCE

SQL Server DELETE 使用索引时速度较慢

sql - 构建临时表/映射

mysql - M :N table with time interval 的数据库设计

mysql - 避免大数据集中的N+1查询

mysql - SQL插入并选择多列?

mysql - 为什么使用 JOIN 查询进行 UPDATE 比使用 JOIN 查询进行 SELECT 慢得多?