В документации говорится, что
Предложение WITH разрешено в этих контекстах:
- В начале операторов SELECT, UPDATE и DELETE .
WITH ... SELECT ...
WITH ... UPDATE ...
WITH ... DELETE ...
Итак, как мне это сделать? Я пробовал что-то вроде этого:
CREATE TABLE test1(
val_1 VARCHAR(20),
val_2 INT
);
INSERT INTO test1 VALUES('abc', 12), ('efg', 13), ('hij', -15);
WITH cte_1 (letters, numbers) AS
(SELECT val_1, val_2 FROM test1)
DELETE FROM cte_1 WHERE numbers=-15;
Это вызывает ошибку: Код ошибки: 1288. Целевая таблица cte_1 DELETE не обновляется
То же самое происходит, когда я попробуйте следующее:
WITH cte_1 (letters, numbers) AS
(SELECT * FROM test1)
UPDATE cte_1 SET numbers=14 WHERE numbers=-15;
Итак, как мне на самом деле ОБНОВЛЯТЬ и УДАЛЯТЬ ИЗ CTE в MySQL? Кстати, я использую Workbench 8.0. Заранее спасибо.