2010-12-01 9 views
0

Je suis en train d'exécuter l'instruction SQL suivanteIS IN (instruction Select, 'valeur', 'valeur')

DELETE FROM T_ATH_POSHLD WHERE T_ATH_POSHLD.A_INSID IN (SELECT T_ATH_POSHLD.A_INSID FROM T_ATH_POSHLD LEFT JOIN T_ATH_INS ON T_ATH_POSHLD.A_INSID = T_ATH_INS.A_INSID WHERE T_ATH_INS.A_INSCLSCDE1 = 'CASH' AND T_ATH_POSHLD.A_INSID NOT IN (SELECT A_INSID FROM T_ATH_CCY) AND A_ACCID IN (SELECT A_ACCID FROM T_ATH_EXTACC, '1212OEIC', '5667033ZS')) 

et en particulier, essaie de vérifier si un ACCID est un ensemble de valeurs, certains venant d'une table et deux codés en dur. Comment pourrais-je y parvenir?

IN (SELECT A_ACCID FROM T_ATH_EXTACC, '1212OEIC', '5667033ZS') 

Ne fonctionne pas, j'obtiens une 'erreur de syntaxe incorrecte'.

Merci

+0

Je devrais ajouter, malheureusement, il n'est pas possible d'ajouter les valeurs à la table EXTACC. – Andy

Répondre

2

Vous devez utiliser UNION pour ajouter les 2 valeurs à la hardcoded ResultSet vous passez à la clause in.

IN (SELECT A_ACCID FROM T_ATH_EXTACC UNION ALL SELECT '1212OEIC' UNION ALL SELECT '5667033ZS') 
0
IN (SELECT '1212OEIC', '5667033ZS', A_ACCID FROM T_ATH_EXTACC) 
+0

Pourquoi cette mise à jour? Cela ne marchera pas. Il passera un ensemble de résultats avec 3 colonnes à la clause 'in' et provoquera une erreur. pas les deux lignes supplémentaires requises. –

Questions connexes