sql >> Databasteknik >  >> RDS >> Mysql

Hur tar man bort från select i MySQL?

SELECT (under)frågor returnerar resultat uppsättningar . Så du måste använda IN , inte = i din WHERE klausul.

Dessutom, som visas i det här svaret du kan inte ändra samma tabell från en underfråga i samma fråga. Du kan dock antingen SELECT sedan DELETE i separata frågor, eller kapsla en annan underfråga och alias det inre underfrågans resultat (ser dock ganska hackigt ut):

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

Eller använd joins som föreslagits av Mchl .



  1. Kopiera/duplicera databas utan att använda mysqldump

  2. Hur man får MySQL-tabellens primärnyckel att automatiskt öka med något prefix

  3. Använda automation för att påskynda releasetesterna på Galera Cluster med ClusterControl

  4. Hur man exporterar Oracle-frågeresultat till en JSON-fil när du använder SQLcl