首先,我想抛弃我仍然是SQL的新手。
考虑你有一个包含x和y列的表,其中两个都是正整数。
问题1:
查找所有y
值是否存在指定i
值x
的最佳方式是什么?
问题2:
在一组y
大小为p的值中,查找每个i
是否存在指定x
值x
的最佳方法是什么?
我找到了一种方法,我可以为第一种情况进行n次自连接,或者为第二种情况进行自我连接。但我很好奇有更好的方法来实现这一目标。
示例表:
x,y
---
1,a
1,b
2,a
3,b
3,c
答案 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)