SQL WHERE IN等效,但用AND代替OR

时间:2018-10-25 18:03:42

标签: sql-server tsql

我碰到一个帖子,上面写着

whereas IN ('val1', 'val2', 'val3') is basically equivalent to

WHERE
(
   column = 'val1'
   OR
   column = 'val2'
   OR 
   column = 'val3'
)

我的问题是,是否有一些东西用AND代替OR:

WHERE
(
   column = 'val1'
   AND
   column = 'val2'
   AND 
   column = 'val3'
)

2 个答案:

答案 0 :(得分:4)

从技术上讲,没有。因为单行列一次不能包含3个不同的值。

我怀疑您只想返回仅包含具有这3个特定值的行的记录,但这只是一个猜测。如果是这样,戈登的答案是一个很好的解决方案。

答案 1 :(得分:3)

不完全是。通常可以使用聚合来解决此问题:

select id  -- of some sort
from t
where column in ('val1', 'val2', 'val3')
group by id
having count(*) = 3;  -- all values accounted for

这假设column没有给定ID的重复值。如果可能的话,请使用having count(distinct column) = 3