質問
Jetでは、特定の条件が結果を返すかどうかをテストします。
正確に1つのレコードを返すクエリが必要です:" 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.
アイデアはありますか
注 「true」を選択したくない遅い(FROMテーブルに多数のレコードがある場合)か、未定義(テーブルにレコードがない場合)である可能性があるため、最後にFROM句を追加することにより複数回。
解決
方法:
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