构建查询的最佳方法是什么?

时间:2012-05-09 17:17:13

标签: sql sql-server

首先,我想抛弃我仍然是SQL的新手。

考虑你有一个包含x和y列的表,其中两个都是正整数。

问题1:

查找所有y值是否存在指定ix的最佳方式是什么?

问题2:

在一组y大小为p的值中,查找每个i是否存在指定xx的最佳方法是什么?

我找到了一种方法,我可以为第一种情况进行n次自连接,或者为第二种情况进行自我连接。但我很好奇有更好的方法来实现这一目标。

示例表:

x,y
---
1,a
1,b
2,a
3,b
3,c

1 个答案:

答案 0 :(得分:1)

您的怀疑是正确的:使用一堆连接非常低效 这是有效的方式:

问题1:如果前提是真的,这两个值将是相同的

select 
    (select count(distinct x) from t1 where y = '1') as x_count_with_y,
    (select count(distinct x) from t1) as x_count 

问题2:如果前提为真,该值将与集合中的x数相同

select count(distinct x)
from t1
where y = '1'
and x in (1,2,3,5,8)