where子句中的子查询

问题描述 投票:1回答:2

很难谷歌这一个,忍受我...寻找更罕见的语法。有这样的查询:

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

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

sql subquery correlated-subquery
2个回答
1
投票

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

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

0
投票

您可以使用SQL Server使用IFF(),如下所示:


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

DB Fiddle Demo

© www.soinside.com 2019 - 2024. All rights reserved.