2011-10-28 3 views
0

J'ai une table de base de données dans mon application dans laquelle je voudrais seulement stocker les dix premières valeurs numériques les plus élevées. Les colonnes sont id (unique), nom, score.Meilleure façon de supprimer efficacement les lignes SQL dans Android

Quelle est la meilleure méthode pour cela? devrais-je retirer manuellement tous les enregistrements et supprimer par ID? ou puis-je utiliser une instruction SQL?

Merci,

Ben

+0

Cela dépend des enregistrements de votre table de base de données. Si c'est en nombre inférieur, puis en utilisant la requête supprimer les lignes. – user370305

+0

Si vous voulez seulement stocker 10 valeurs, utilisez un fichier, vous n'avez pas besoin d'une base de données relationnelle pour cela. –

+0

@ MaurícioLinhares Je ne suis pas sûr d'être d'accord. SQL lui fournira une certaine facilité d'accès qu'un fichier plat ne le fera pas. Et je ne pense pas que l'overhead de sqlite justifierait de ne pas l'utiliser. C'est sq * lite * –

Répondre

1

Je ne suis pas sûr à 100% SQLite, mais dans les versions ultérieures de MySql, quelque chose comme ça fonctionne

DELETE FROM table_name 
WHERE column_name NOT IN (
SELECT column_name 
FROM table_name 
ORDER BY column_name DESC 
LIMIT 10); 

Fondamentalement, sélectionnez tout ce qui est pas dans le top 10 et supprimez-le

+0

Oooh qui ressemble à ça devrait marcher, je l'essaie! Merci –

3

Alors ce que vous pouvez faire est de mettre un Trigger sur vous insérez pour la table. Fondamentalement, le déclencheur vérifierait s'il y avait maintenant plus de 10 lignes dans la table et supprimerait la plus petite rangée (s). Le déclencheur ressemblerait à ceci:

CREATE TRIGGER clamp_trigger AFTER INSERT ON table_name 
BEGIN 
    DELETE FROM table_name 
    WHERE column_name NOT IN (
    SELECT column_name 
    FROM table_name 
    ORDER BY column_name DESC 
    LIMIT 10); 
END; 
+0

Merci, mais je veux que seulement 10 valeurs soient stockées dans la base de données, je n'ai besoin que d'un top 10, et je ne veux pas que la taille de mon appli augmente trop sur le téléphone des utilisateurs –

+0

Voir mes modifications répondre à cette préoccupation. –

+0

dites-vous quand je l'insère dans la table? Une idée à quoi cela ressemblerait? J'ai du mal à suivre l'exemple. Merci bien –

Questions connexes