2017-04-14 2 views
1

Si j'utilise quelque chose comme un SERIAL (qui est un nombre aléatoire) pour la clé primaire de ma table, comment puis-je sélectionner une ligne numérotée de ma table? Dans MySQL, j'utilise simplement l'ID incrémenté automatiquement pour sélectionner une ligne spécifique, mais je ne sais pas comment aborder le problème avec une séquence de numérotation arbitraire.Comment sélectionner la ligne n dans CockroachDB?

Pour référence, voici la table, je travaille avec:

+--------------------+------+-------+ 
|   id   | name | score | 
+--------------------+------+-------+ 
| 235451721728983041 | ABC | 1000 | 
| 235451721729015809 | EDF | 1100 | 
| 235451721729048577 | GHI | 1200 | 
| 235451721729081345 | JKL | 900 | 
+--------------------+------+-------+ 

Répondre

2

En utilisant les clauses LIMIT et OFFSET renverra la nième ligne. Par exemple SELECT * FROM tbl ORDER BY col1 LIMIT 1 OFFSET 9 renvoie la 10ème ligne. Notez qu'il est important d'inclure la clause ORDER BY ici parce que vous vous souciez de l'ordre des résultats (si vous n'incluez pas ORDER BY, il est possible que les résultats soient ordonnés arbitrairement).

Si vous vous souciez de l'ordre dans lequel les choses ont été insérées, vous pourriez ORDER BY la colonne SERIAL (id dans votre cas), mais il est pas toujours le cas parce que les conflits de transaction et d'autres choses pourraient entraîner des modifications générées SERIAL valeurs à ne pas être strictement commandé.