2012-07-27 5 views
0

Maintenant, je suis en train de garder 100 messages d'un utilisateur dans la base de données et je suis en train de supprimer les autres messages sur 100mysql Supprimer de la table après 100

ma base de données est MySQL. mon sql est

DELETE FROM userMessage WHERE id = ? limit 100, 9999; 

mais la version de ma base de données ne supporte pas ce sql.

merci :)

+0

s'il vous plaît se référer cette discussion http://dba.stackexchange.com/questions/11258/mysql-delete-all-rows-plus-que-n-entries-ordered-by-datetime – krishnakumarp

Répondre

2

Peut-être que quelque chose comme ça?

DELETE FROM userMessage WHERE id not in 
(SELECT id FROM userMessage uM where user_id = ? ORDER BY id DESC LIMIT 100) 
+0

Cela fonctionnerait, MAIS vous auriez besoin de faire, 'where id NOT in' à la place, sinon il suffit simplement de supprimer les 100 premières lignes. – Gavin

+0

SUPPRIMER FROM singleMessage WHERE id pas dans (sélectionnez t.id dans (SELECT id FROM singleMessage uM où ownerId =? ORDER BY id ASC LIMIT 100) comme t); cela fonctionne bien merci :) – Felix

1

Pourquoi pas sélectionner 100 enregistrements dans une table temporaire. Puis supprimez l'ancienne table et renommez le nom de la table temporaire par la suite.

0

Ayant id unique, vous pouvez utiliser cette requête -

DELETE t1 
FROM 
    table1 t1 
LEFT JOIN (SELECT * FROM table1 ORDER BY id LIMIT 100) t2 -- Specify your LIMIT values here 
    ON t1.id = t2.id 
WHERE 
    t2.id IS NULL 

Cette requête supprimera tous les enregistrements après 100.

Questions connexes