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

Löschen Sie alle Zeilen außer dem ersten N aus einer Tabelle mit einer einzigen Spalte

Wenn Sie Ihre Aufzeichnungen nach friends_name bestellen können , und wenn es keine Duplikate gibt, können Sie Folgendes verwenden:

DELETE FROM names
WHERE
  friends_name NOT IN (
    SELECT * FROM (
      SELECT friends_name
      FROM names
      ORDER BY friends_name
      LIMIT 10) s
  )

Siehe fiddle hier .

Oder Sie können dies verwenden:

DELETE FROM names ORDER BY friends_name DESC
LIMIT total_records-10

wobei total_records (SELECT COUNT(*) FROM names) ist , aber Sie müssen dies per Code tun, Sie können keine Anzahl in die LIMIT-Klausel Ihrer Abfrage einfügen.