SELECT
(pod)zapytania zwracają wyniki zestawy . Musisz więc użyć IN
, a nie =
w swoim WHERE
klauzula.
Dodatkowo, jak pokazano w ta odpowiedź
nie można modyfikować tej samej tabeli z podzapytania w ramach tego samego zapytania. Możesz jednak wybrać SELECT
następnie DELETE
w oddzielnych zapytaniach lub zagnieździć inne podzapytanie i aliasować wewnętrzny wynik podzapytania (choć wygląda to dość dziwacznie):
DELETE FROM posts WHERE id IN (
SELECT * FROM (
SELECT id FROM posts GROUP BY id HAVING ( COUNT(id) > 1 )
) AS p
)
Lub użyj złączeń zgodnie z sugestią Mchla .