Sql server SQL,其中为等效项,但使用AND代替OR

Sql server SQL,其中为等效项,但使用AND代替OR,sql-server,tsql,Sql Server,Tsql,我看到一个帖子说 whereas IN ('val1', 'val2', 'val3') is basically equivalent to WHERE ( column = 'val1' OR column = 'val2' OR column = 'val3' ) 我的问题是,是否有什么东西可以用AND代替ORs,例如: WHERE ( column = 'val1' AND column = 'val2' AND col

我看到一个帖子说

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

WHERE
(
   column = 'val1'
   OR
   column = 'val2'
   OR 
   column = 'val3'
)
我的问题是,是否有什么东西可以用AND代替ORs,例如:

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

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

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

这假设列对于给定id没有重复的值。如果可能的话,请使用having countdistinct column=3。

从技术上讲,不是。因为单行列不能同时包含3个不同的值


我猜想您只想返回只有这3个特定值的行的记录,但这只是一个猜测。如果是这样的话,Gordon的答案是一个很好的解决方案。

一个字段/列不能同时有超过1个值。我正在尝试分组,其中列必须包含这些值。having countdistinct column=3;