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

Ton*_*ong 2 t-sql sql-server

我看到一个帖子说

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)

Gor*_*off 6

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

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.

  • 有计数(不同列)= 3; (4认同)