Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Löschen Sie eine Ergebnismenge einer SQL-Abfrage

Es stimmt, dass Sie nicht dieselbe Tabelle, aus der Sie Zeilen löschen möchten, in einem direkten Subselect verwenden können, aber mit einem kleinen Trick - einem Subselect auf einem Subselect als abgeleitete Tabelle - können Sie es tun:

DELETE FROM votes
WHERE id IN (
    SELECT 
        t.id
    FROM ( 
        SELECT v.id, COUNT(c.comment) cnt
        FROM votes v
        LEFT JOIN comments c ON f.id = v.post_id
        GROUP BY v.id
        HAVING COUNT(c.comment) = 0 
    ) t
);

Ich gehe davon aus, dass die Zeilen ohne Kommentare gelöscht werden sollten.