题
在喷气,我想如果某些条件返回任何结果来测试。
我想查询它返回一个记录:“真”,如果有任何结果,“假”
这个工作在MS SQL:
SELECT
CASE
WHEN EXISTS(SELECT * FROM foo WHERE <some condition>)
THEN 1
ELSE 0
END;
这是我在喷气曾尝试:
SELECT IIF(EXISTS(SELECT * FROM foo WHERE <some condition>), 0, 1);
这使我的错误:
Reserved error (-3025); there is no message for this error.
任何想法?
注意强> 我不希望通过在最后一个上套结FROM子句中选择“真”多次,因为它可能是缓慢的(如果FROM表有许多记录)或undefined(如果该表有0的记录)。
解决方案
如何:
SELECT TOP 1 IIF(EXISTS(
SELECT * FROM foo
WHERE <some condition>), 0, 1) As f1
FROM foo
也许更清楚:
SELECT TOP 1 IIF(EXISTS(
SELECT * FROM foo
WHERE <some condition>), 0, 1) As F1
FROM MSysObjects
其他提示
您可能能够使用计数
SELECT DISTINCT IIF((SELECT COUNT(*) AS Result FROM [Data Set]), 1, 0) FROM [Data Set];
大多数EXISTS查询可以被重新写为左连接:
SELECT
CASE
WHEN foo.col is NULL
THEN 0
ELSE 1
END;
... LEFT JOIN foo on <where condition>
不隶属于 StackOverflow