Comment écrire un SQL DELETE avec une instruction SELECT dans la clause where?

Base De Données: Sybase Avantage 11

Sur ma quête pour normaliser les données, je suis en train de supprimer les résultats que j'obtiens à partir de ce SELECT déclaration:

SELECT tableA.entitynum
FROM tableA q
INNER JOIN tableB u on (u.qlabel = q.entityrole AND u.fieldnum = q.fieldnum) 
WHERE (LENGTH(q.memotext) NOT IN (8,9,10) 
OR q.memotext NOT LIKE '%/%/%')
AND (u.FldFormat = 'Date')
;

C'est le DELETE déclaration que je viens avec:

DELETE FROM tableA
WHERE (SELECT q.entitynum
FROM tableA q
INNER JOIN tableB u on (u.qlabel = q.entityrole AND u.fieldnum = q.fieldnum) 
WHERE (LENGTH(q.memotext) NOT IN (8,9,10) 
OR q.memotext NOT LIKE '%/%/%')
AND (u.FldFormat = 'Date'))
;

Je continue cette erreur s'affiche lorsque j'essaie d'exécuter cette instruction:

ERROR IN SCRIPT: poQuery: Error 7200:  AQE Error:  State = S0000;   NativeError = 2124;
[iAnywhere Solutions][Advantage SQL Engine]Invalid operand for operator: = Boolean value
cannot be operated with non-Boolean value.

J'ai aussi essayé cette déclaration:

DELETE FROM tableA 
INNER JOIN tableB u on (u.qlabel = tableA.entityrole AND u.fieldnum = tableA.fieldnum) 
WHERE (LENGTH(q.memotext) NOT IN (8,9,10) 
OR tableA.memotext NOT LIKE '%/%/%')
AND (u.FldFormat = 'Date')
;

Qui se traduit par:

ERROR IN SCRIPT: poQuery: Error 7200:  AQE Error:  State = 42000;   NativeError = 2117;
[iAnywhere Solutions][Advantage SQL Engine] Unexpected token: INNER -- Expecting semicolon.
-- Location of error in the SQL statement is: 23 (line: 2 column: 1)

Quelqu'un pourrait-il m'aider à bien la construction d'une requête de SUPPRESSION qui va aboutir à la bonne données supprimées?

  • Le pire des scénarios, vous pouvez créer une table temporaire, SÉLECTIONNEZ dans la table temporaire, faites votre supprimer de rejoindre la table temporaire, puis Dropant la table temporaire?
InformationsquelleAutor LuiCami | 2013-07-09