2009-03-21 5 views
7

J'ai une base de données dans SQLlite et je voudrais trier ma table dans un ordre alphabétique. Comment puis-je le faire? Y at-il un moyen de trier les entrées en utilisant uniquement SQLite ou dois-je d'abord lire une table dans un tableau, le trier et ensuite l'écrire dans une base de données?SQLite - tri d'une table

Voici ma requête: "SELECT entrée FROM table WHERE id =?" J'ai besoin d'obtenir des données de la table en utilisant cette instruction afin d'obtenir une seule entrée à la fois. Nous vous remercions d'avance, Ilya.

Répondre

13
'Select name from table order by name asc' 

« asc » est ascendante, vous donnera le champ de texte dans l'ordre alphabétique, à l'inverse « desc » sera à vous donner dans l'ordre alphabétique inverse. Editer: en règle générale, vous devriez laisser la base de données faire le tri. Le message ci-dessous est lié, et sans doute, presque le même. Vous trouverez peut-être utile:

PHP/SQL: ORDER BY or sort($array)?

+0

Merci, cela aide. Mais comment puis-je attribuer de nouveaux ID à chaque ligne après le tri? Alors que les changements apparaîtront dans ma table. Si je veux obtenir une entrée avec un ID = 0, il me donnera un mot commençant par A et ainsi de suite. –

+0

@Ilya: Les clés ID ne sont pas des numéros de ligne. Ils doivent être uniques, mais ils ne sont pas dans un ordre quelconque (ni contigus). Trier en fonction de la colonne 'name' et utiliser la valeur ID uniquement pour référencer la ligne. –

+0

Voulez-vous dire que vous voulez réorganiser les données par ordre alphabétique de sorte que la première entrée (alphabétique) se voit attribuer le plus petit numéro d'identification? Vous pouvez insérer dans une nouvelle table, puis supprimer l'ancienne, par ex. SELECT nom INTO table2 FROM table classer par nom asc – karim79

0

Si vous voulez trier table sans sensibilité à la casse ou locale spécifique (pas anglais), vous devez ajouter à votre collation SQLite. Here est un exemple comment le faire.

2

Il convient également de souligner que l'ordre des données dans n'importe quelle table de base de données SQL, ou récupéré à l'aide d'une requête qui n'inclut pas de clause order by, n'est pas défini.

En pratique, une lecture directe d'une table sans commande par récupérera des données dans un ordre fixe et c'est souvent l'ordre d'insertion. Cependant compter sur ceci est toujours une erreur, bien que celui qui est vu alarmant souvent.