SELECT
(под)заявките връщат набори от резултати . Така че трябва да използвате IN
, а не =
във вашия WHERE
клауза.
Освен това, както е показано в този отговор
не можете да модифицирате същата таблица от подзаявка в рамките на същата заявка. Можете обаче или SELECT
след това DELETE
в отделни заявки или вложете друга подзаявка и псевдоним на резултата от вътрешната подзаявка (все пак изглежда доста хакерски):
DELETE FROM posts WHERE id IN (
SELECT * FROM (
SELECT id FROM posts GROUP BY id HAVING ( COUNT(id) > 1 )
) AS p
)
Или използвайте присъединявания както е предложено от Mchl .