Determinar existência de resultados em jet SQL?
Pergunta
Em Jet, eu quero testar se certas condições nenhum resultado.
Eu quero uma consulta que retorna exatamente um registro:. "True" se existem resultados "falso" caso contrário
Isso funciona em MS SQL:
SELECT
CASE
WHEN EXISTS(SELECT * FROM foo WHERE <some condition>)
THEN 1
ELSE 0
END;
Isto é o que eu tentei no Jet:
SELECT IIF(EXISTS(SELECT * FROM foo WHERE <some condition>), 0, 1);
que me dá o erro:
Reserved error (-3025); there is no message for this error.
Todas as idéias?
NOTA Eu não quero para selecionar "verdadeiros" várias vezes por aderência em uma cláusula FROM no final, porque ele pode ser lento (se o DE mesa tinha muitos registros) ou indefinida (se a tabela teve 0 resultados).
Solução
Como sobre: ??
SELECT TOP 1 IIF(EXISTS(
SELECT * FROM foo
WHERE <some condition>), 0, 1) As f1
FROM foo
Talvez mais claramente:
SELECT TOP 1 IIF(EXISTS(
SELECT * FROM foo
WHERE <some condition>), 0, 1) As F1
FROM MSysObjects
Outras dicas
Você pode ser capaz de usar uma contagem
SELECT DISTINCT IIF((SELECT COUNT(*) AS Result FROM [Data Set]), 1, 0) FROM [Data Set];
A maioria EXISTE consultas pode ser como uma esquerda re-escrita juntar-se:
SELECT
CASE
WHEN foo.col is NULL
THEN 0
ELSE 1
END;
... LEFT JOIN foo on <where condition>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow