2008-11-14 7 views

Répondre

3

vous voulez SINON EXISTE (SELECT ...) ET EXISTE PAS (SELECT ....)

+0

pourquoi je ne peux pas faire les deux en une seule déclaration si? cela n'a aucun sens! –

+0

en fait cela devrait être ... OU PAS EXISTE ... –

+0

@Blankman: EXISTS prend un seul choix comme paramètre –

8

essayer cette façon au lieu

IF 
    NOT EXISTS (SELECT 1 FROM Users where userID = 1) 
AND 
    NOT EXISTS (SELECT 1 FROM sales WHERE saleID = 1) 
BEGIN 
     -- blah blah blah 
END 

ou, si vous insistez sur une disjonction:

IF NOT (
    EXISTS (SELECT 1 FROM Users where userID = 1) 
    OR 
    EXISTS (SELECT 1 FROM sales WHERE saleID = 1) 
) 
BEGIN 
    -- blah blah blah 
END 

l'opérateur EXISTS prend une seule instruction select et vérifie les résultats (vous pouvez donc utiliser une constante 1 au lieu de * ou un nom de colonne, c'est plus efficace)

+0

ahh ok, j'essaie d'apporter ma syntaxe C# à la 'table' haha ​​ –

0

Peut-être que c'est ce que vous essayez de faire:

IF NOT EXISTS(SELECT * FROM Users WHERE userID = 1) OR (AND) NOT EXISTS(SELECT * FROM sales WHERE saleID = 1) 
1

changement « ou » à « union »

+0

tant que le même ensemble de champs est retourné par les deux requêtes, cela fonctionnerait –

Questions connexes