Baza: Sybase Advantage 11Jak napisać instrukcję DELETE SQL za pomocą instrukcji SELECT w klauzuli WHERE?
Na moim dążeniu do normalizacji danych, próbuję usunąć wyniki dostaję od tego SELECT
stwierdzeniem:
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')
;
To stwierdzenie DELETE
I mają pochodzić z:
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'))
;
ja ciągle ten błąd, gdy próbuję uruchomić to oświadczenie:
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.
Próbowałem również to stwierdzenie:
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')
;
co skutkuje:
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)
Może ktoś mi pomóc w odpowiednio konstruując DELETE że spowoduje odpowiednie dane są usuwane?
Najgorszy scenariusz - można utworzyć tabelę tymczasową, SELECT w tej tabeli tymczasowej, wykonać usuwać przystąpienie do tabeli tymczasowej, a następnie Droping tabeli tymczasowej? –