База данных: Sybase Advantage 11Как написать инструкцию SQL DELETE с инструкцией SELECT в предложении WHERE?
В своем стремлении нормализовать данные, я пытаюсь удалить результаты, которые я получаю от этого SELECT
заявление:
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')
;
Это DELETE
заявление, которое я придумал:
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'))
;
Я постоянно получаю эту ошибку, когда я пытаюсь запустить это заявление:
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.
Я также попытался это заявление:
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')
;
что приводит:
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)
Может кто-то помочь мне правильно построению УДАЛИТЬ запрос, который приведет в соответствующих данных удаляются?
Наихудший сценарий - вы можете создать временную таблицу, ВЫБРАТЬ в эту временную таблицу, сделать ваш удалить присоединение к временной таблице, а затем Droping временной таблицы? –