문제

Jet에서는 특정 조건이 결과를 반환하는지 테스트하고 싶습니다.

결과가 있다면 "true"라는 레코드를 정확히 반환하는 쿼리를 원합니다.

이것은 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 Clause를 태클하여 "True"를 여러 번 선택하고 싶지 않습니다 (테이블에서 레코드가 많으면) 또는 정의되지 않은 (테이블에 테이블에 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];

대부분의 쿼리는 왼쪽 결합으로 다시 작성 될 수 있습니다.

    SELECT
      CASE
        WHEN foo.col is NULL 
        THEN 0
        ELSE 1
    END;
   ... LEFT JOIN foo on <where condition>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top