where 子句中的子查询

Subquery in the where clause

很难 google 这个,耐心等待...寻找更罕见的语法。是否有这样的查询:

SELECT x
FROM foo 
WHERE foo.y = (foo.a = 3 AND foo.b = 5)

基本上,parens 中的表达式求值为布尔值,我想知道它是否可用于查找 y 列(存储布尔值)。 这种语法可能是错误的,有人知道是否存在这样的东西吗?

您可以像这样使用 CASE 表达式:

SELECT x
from foo 
where foo.y = (CASE WHEN (foo.a = 3 AND foo.b = 5) THEN 1 ELSE 0 END)

你可以使用IFF(),使用SQL Server,如下:


select x 
from foo
where foo.y = (select iif(foo.a=3 and foo.b=5,0,1));

DB Fiddle Demo