确定jet SQL中是否存在结果?

时间:2009-11-30 21:26:56

标签: sql jet exists iif

在Jet中,我想测试某些条件是否会返回任何结果。

我想要一个只返回一条记录的查询:如果有任何结果则为“true”,否则为“false”。

这适用于MS SQL:

SELECT
  CASE
    WHEN EXISTS(SELECT * FROM foo WHERE <some condition>)
    THEN 1
    ELSE 0
  END;

这是我在Jet中尝试过的:

SELECT IIF(EXISTS(SELECT * FROM foo WHERE <some condition>), 0, 1);

给了我错误:

Reserved error (-3025); there is no message for this error.

有什么想法吗?

注意 我不想通过在最后添加FROM子句多次选择“true”,因为它可能很慢(如果FROM表有很多记录)或未定义(如果表有0条记录)。

3 个答案:

答案 0 :(得分:1)

怎么样:

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

答案 1 :(得分:1)

您可以使用计数

SELECT DISTINCT IIF((SELECT COUNT(*) AS Result FROM [Data Set]), 1, 0) FROM [Data Set];

答案 2 :(得分:0)

大多数EXISTS查询可以重写为左连接:

    SELECT
      CASE
        WHEN foo.col is NULL 
        THEN 0
        ELSE 1
    END;
   ... LEFT JOIN foo on <where condition>