문제
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>
제휴하지 않습니다 StackOverflow