2011-07-11 3 views
1

Ma table:Comment supprimer toutes les lignes de plus de 50 points?

_id | state | timeStamp 

Je veux sélectionner toutes les lignes qui sont de l'état = 0 et pour que le résultat par Horodatage. Je tiens à supprimer tous les éléments passés une limite particulière, disons 50 lignes.

* Essentiellement, je ne veux pas qu'il y ait plus de 50 lignes avec l'état = 0

Comment puis-je réaliser cela? J'ai essayé d'écrire un, mais je reçois un peu perdu ...

SUPPRIMER FROM table WHERE (état = 0) ORDER BY timeStamp

+0

Vous voulez donc tronquer votre table à 50 lignes? –

+0

Je ne suis pas sûr de comprendre ce que vous entendez par événements? Je suppose que les lignes droites? Essentiellement, je ne veux pas qu'il y ait plus de 50 lignes avec l'état = 0 – Jona

+0

Désolé, oui lignes. –

Répondre

1

Utilisez l'instruction NOT IN avec une sous requête:
DELETE FROM table WHERE state = 0 AND _id NOT IN(SELECT _id FROM table WHERE state = 0 ORDER BY timeStamp LIMIT 50);

ce qu'il fait est de sélectionner toutes les lignes où state = 0 et supprime alors les 50 premières lignes qui a state = 0 tout en commandant sur timeStamp

+0

oui, je me suis essentiellement perdu avec la sous-requête quand j'essayais ... Donc, je comprends ce que vous avez là, mais il semble que la première et la dernière commande SELECT sont répétées. Qu'est-ce que le - signifie? – Jona

+0

Désolé, le moins est faux, je suis à la recherche de la bonne requête. Donnez-moi une minute :) –

+0

@Nicklas ne devriez-vous pas utiliser NOT IN au lieu de IN? –

1

Vous pouvez trouver ce que l'horodatage est pour la 50e ligne, puis faire une suppression STATEM ent pour les lignes dont l'état est égal à 0 et dont l'horodatage est plus ancien (ou plus récent, selon ce qui s'applique ici) que l'horodatage que vous avez trouvé.

+0

merci pour votre idée d'approche, je pense que cela rend complète. Je ne sais toujours pas comment écrire une requête DELETE complexe. Essentiellement, avec l'aide de ce forum, je peux obtenir ce travail avec une requête et comprendre comment cela fonctionne. :) – Jona

Questions connexes