Вы не можете указать целевую таблицу «A» для обновления в предложении FROM - PullRequest
1 голос
/ 12 апреля 2011

Это мой запрос

> DELETE FROM A WHERE id in (    Select
> id From A    Left Join B on A.id=B.id 
> Where B.id is null )

Когда я выполняю это, у меня появляется эта ошибка

Вы не можете указать целевую таблицу 'A' для обновления в предложении FROM

Ответы [ 3 ]

5 голосов
/ 12 апреля 2011

Может быть, вы могли бы сделать это так вместо этого?

DELETE FROM A WHERE id NOT IN (SELECT DISTINCT B.id FROM B);
1 голос
/ 12 апреля 2011
DELETE FROM A
WHERE NOT EXISTS (
    SELECT *
    FROM B
    WHERE content_id = B.content_id
)
1 голос
/ 12 апреля 2011

Вы хотите удалить все записи из таблицы A, которые не имеют совпадающего идентификатора в таблице B?

Как насчет этого:

DELETE
FROM A
WHERE NOT EXISTS (select 1 from B where A.id = B.id);
...