我碰到一个帖子,上面写着
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'
)
答案 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
。