我有一张这样的表:
col1 col2
a 10
b 20
a 30
c 40
a 05
我正在尝试编写一个查询来获取列col1中列col2中值为10,20,30的所有值。我使用了AND语句但它什么都没有返回
答案 0 :(得分:2)
您可以使用IN子句提供多个输入
SELECT col1 FROM yourtable WHERE COL2 IN (10,20,30)
相当于:
SELECT col1 FROM yourtable WHERE COL2 = 10 OR COL2 = 20 OR COL2 = 30
答案 1 :(得分:0)
您可以使用group by
和having
:
select col1
from t
where col2 in (10, 20, 30)
group by col1
having count(distinct col2) = 3;
使用AND
进行此类查询是一个非常非常常见的错误。问题是没有一行可以拥有所有三个值 - WHERE
只是在过滤时一次查看一行。相反,您需要获取具有这些值的所有行,然后将这些行放在一起以查看每个col1
值的匹配数。