0

给定一个包含这些数据的表:

   L    |    N
-------------------
   A    |    1
   A    |    3
   A    |    5
   B    |    5
   B    |    7
   B    |    9
   C    |    1
   C    |    2
   C    |    3

编写一个优雅的 SQL 查询来实现这一点:

查找包含所有 1、2 和 3 的字母 (L)

预期的结果很明显:带有“C”的单行

有人有解决方案吗?不,这不是 CS 作业问题。只是好奇您将如何编写 SQL 查询来找到解决方案。

在此先感谢,丹尼尔

4

2 回答 2

7
select L
from MyTable
where N in (1,2,3)
group by L
having count(distinct N) = 3

SQL 小提琴示例

于 2012-09-26T15:23:17.613 回答
0

也可以
Messier 但通常更快
只会走这条 L 很大的路线,比如超过 100,000,并且您遇到了性能问题。

select     L from mytable where N = 1
 intersect
select     L from mytable where N = 2
 intersect
select     L from mytable where N = 3
于 2012-09-26T18:48:19.263 回答