Mysql
 sql >> Database >  >> RDS >> Mysql

Come eliminare da selezionare in MySQL?

SELECT Le (sotto)query restituiscono il risultato set . Quindi devi usare IN , non = nel tuo WHERE clausola.

Inoltre, come mostrato in questa risposta non è possibile modificare la stessa tabella da una sottoquery all'interno della stessa query. Tuttavia, puoi sia SELECT quindi DELETE in query separate o annidare un'altra sottoquery e alias il risultato della sottoquery interna (sembra piuttosto hacky, però):

DELETE FROM posts WHERE id IN (
    SELECT * FROM (
        SELECT id FROM posts GROUP BY id HAVING ( COUNT(id) > 1 )
    ) AS p
)

Oppure usa i join come suggerito da Mchl .