有没有一种好的方法可以在 SQL 中表达,如果列匹配则选择特定行,否则选择更一般的行?像这样的东西:
SELECT name FROM names
WHERE (colA = @colA OR colA = 'ALL')
我只希望它返回一个特定的记录(如果它存在),否则如果找不到特定的列匹配则返回通用的“ALL”记录。似乎 COALESCE 与我正在寻找的类似,但我不知道它在语法上如何工作。
最佳答案
@Blorgbeard 的回答(使用 top 1 和 order by)可能是最好的方法,但为了与众不同,您也可以使用子查询而不存在:
SELECT name FROM names
WHERE (colA = @colA) OR (colA = 'ALL' AND NOT EXISTS(
SELECT name FROM names
WHERE colA = @colA))
我猜它的“优势”是它使用了更标准的 sql。
关于sql - COALESCE 在 Where 子句中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22623332/