困惑的SQL语句

时间:2012-09-26 15:22:11

标签: sql tsql logic

给出一个包含此数据的表格:

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

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

FIND Letters(L)包括所有1,2和3

预期结果显而易见: 单行“C”

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

提前致谢, 丹尼尔

2 个答案:

答案 0 :(得分:7)

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

SQL Fiddle Example

答案 1 :(得分:0)

也可以 梅西耶,但通常更快 只会走这条L的路线很大,比如超过10万,而且你遇到了性能问题。

select     L from mytable where N = 1
 intersect
select     L from mytable where N = 2
 intersect
select     L from mytable where N = 3