2009-10-08 5 views
0

J'ai une table où chaque ligne est un nom d'utilisateur avec vote associé comptePaging et la sélection de lignes commençant par une lettre d'un DB

Le but est de faire radiomessagerie par nom d'utilisateur

de sorte que vous pouvez cliquer sur le lettre C et arriver à la C de

Mais s'il n'y a que comme 2 C de, alors vous voulez montrer 18 d's ainsi ou 12 d's et 6 E de

alors, comment puis-je trouver où commencer la requête comme, selec t de quelque limite XX, 20 comment puis-je trouver que XX où le début de C, le début de F, etc

traiter Fondamentalement, la première lettre comme un numéro et sélectionnez le top 20.

+0

Comme vous pouvez le voir dans les réponses, la syntaxe dépend de quel SGBD que vous utilisez. –

Répondre

4

select * from table où name> = 'C' Trier par nom limite 20

+1

Eh bien, c'est presque si facile que je suis embarassé – Matt

+0

Je pense que c'est très faux. Qu'en est-il de la page suivante s'il y a 40 Cs? – DVK

+0

@DVK: vous enregistreriez le dernier de la page précédente et changeriez la valeur>. –

3
SELECT TOP 20 * FROM [Table] WHERE [username] >= 'C' ORDER BY [username] 
1

Vous pouvez toujours sélectionner le top 20.

SELECT Top 20 * FROM Users WHERE Username >= 'C' ORDER BY Username 
1

La meilleure façon (en supposant que les pages vont au serveur Web et la page est demandée à partir #N serveur web):

select bottom 20 from 
(select top N*20 * 
from myTable 
order by username 
) TOPNPAGES 
Questions connexes