我看到一个帖子说
whereas IN ('val1', 'val2', 'val3') is basically equivalent to
WHERE
(
column = 'val1'
OR
column = 'val2'
OR
column = 'val3'
)
Run Code Online (Sandbox Code Playgroud)
我的问题是,是否有一些东西可以用 AND 代替 OR,例如:
WHERE
(
column = 'val1'
AND
column = 'val2'
AND
column = 'val3'
)
Run Code Online (Sandbox Code Playgroud)
不完全是。这个问题通常可以使用聚合来解决:
select id -- of some sort
from t
where column in ('val1', 'val2', 'val3')
group by id
having count(*) = 3; -- all values accounted for
Run Code Online (Sandbox Code Playgroud)
这假设column给定的 id 没有重复的值。如果可能的话,请使用having count(distinct column) = 3.