質問

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>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top