2009-08-16 7 views
0

Comment puis-je sélectionner une ligne particulière d'une table?Sélection d'une ligne spécifique d'une table

Je veux faire réaliser quelque chose comme ce qui suit:

select * from 
    (select * from tablename1 where type=1 order by id desc) 
where rownum = 5 

select * from 
    (select * from tablename1 where type=1 order by id desc) 
where rownum = $variable 
+1

De quelle base de données? Différents fournisseurs gèrent cela différemment. –

+0

J'utilise mysql db – user156073

Répondre

3

Utilisez le mot-clé LIMIT:

SELECT * FROM tablename WHERE (stuff...) LIMIT $rownum,1; 

Si vous passez 2 numéros à LIMIT, il traite le premier comme un décalage et la deuxième comme un certain nombre de résultats à renvoyer (alors que si vous passez seulement 1 nombre, il traite juste comme un certain nombre de résultats). Ainsi, en demandant LIMIT $rownum,1, vous ne récupérerez qu'une seule ligne, qui est celle de la position $ rownum (gardez à l'esprit que les lignes sont indexées à partir de 0).

+0

Ceci est un mot-clé MySQL. Ce que l'OP posté ci-dessus est la syntaxe PL/SQL. SQL Server utilise 'row_number() sur (order by col)'. Et maintenant tu sais. – Eric

+0

En fait, ce que l'OP a posté était aussi une syntaxe mysql valide (du moins, sans compter le bit du numéro de ligne qui est ce qu'ils demandaient en premier lieu). Sans oublier leur commentaire indiquant qu'ils utilisent mysql. – Amber

+0

@Dav: 'rownum' n'est pas une fonction dans MySQL, et l'OP a posté ce commentaire * après * le mien. Et je ne suis pas un voyageur du temps. Encore. Vous obtenez +1 pour la réponse maintenant correcte :) – Eric

Questions connexes