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).

Foi útil?

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
scroll top