SQLITE équivalent Oracle pour les ROWNUM?
Je suis en ajoutant un index de colonne d'une table dans SQLite3 pour autoriser les utilisateurs à facilement réorganiser les données, en les renommant l'ancienne base de données et en créer un nouveau à sa place avec les colonnes supplémentaires.
Le problème que j'ai c'est que j'ai besoin de donner à chaque ligne d'un numéro unique dans l'index de colonne lorsque j'INSERT...SELECT les anciennes valeurs.
Une recherche que j'ai fait tourné une expression utile dans Oracle appelé ROWNUM, mais SQLite3 ne l'a pas. Est-il quelque chose d'équivalent dans SQLite?
OriginalL'auteur Raceimaztion | 2012-09-02
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser l'un des noms de ligne
ROWID
,OID
ou_ROWID_
pour obtenir le rowid d'une colonne. Voir http://www.sqlite.org/lang_createtable.html#rowid pour plus de détails (et que les lignes peuvent être masqués par la normale colonnes appeléROWID
et ainsi de suite).Pas exactement. Oracles ROWNUM s'applique à la de la requête.
SELECT rownum FROM tbl WHERE rownum > 3
trouverez rien (parce que la première ligne où cela serait vrai pour obtenir le numéro de rangée 1). Mais ce n'est pas la Fpo exigence. Il a juste besoin d'une valeur unique.Ok, il est peut-être pas "exactement" la même chose que ROWNUM mais c'est l'id unique pour chaque ligne ajoutée automatiquement. C'est @Raceimaztion de l'exigence.
OriginalL'auteur Johannes Kuhn
Pas de SQLite n'ont pas d'équivalent direct à Oracle ROWNUM.
Si je comprends votre exigence correctement, vous devriez être en mesure d'ajouter un numéro de colonne en fonction de la commande de l'ancienne table de cette façon:
La nouvelle table contient:
La
AUTOINCREMENT
fait ce que son nom suggère: chaque ligne a une " valeur incrémentée de 1.OriginalL'auteur
sqlite est déjà l'ajout de rowid pour vous, pas besoin de faire deux fois la même. Notez que rowid seront réutilisés par l'sqlite après BEAUCOUP de plaquettes, lorsque les anciens sont supprimés.
OriginalL'auteur Punnerud