在喷气,我想如果某些条件返回任何结果来测试。

我想查询它返回一个记录:“真”,如果有任何结果,“假”

这个工作在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>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top