在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条记录)。
答案 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>