2010-05-13 3 views
72

Existe-t-il un moyen de faire sauter les 10 premiers résultats d'une requête SELECT dans MySQL? Je voudrais que ça fonctionne quelque chose comme LIMIT. LIMIT vous permet d'ignorer n'importe quel nombre de lignes.MySQL sauter les 10 premiers résultats

+6

toutes les réponses ici manquent une clause ORDER BY. Les tables SQL n'ont pas d'ordre par défaut, et sans ORDER BY explicite il n'y a aucun moyen de dire quels sont les 10 premiers résultats à ignorer – fthiella

Répondre

5

Il a deux paramètres, et le premier d'entre eux - le nombre de lignes à sauter

+0

Cela m'a fait comprendre que "What is Offset" Merci @Col. Shrapnel –

24

De l'manual:

Pour récupérer toutes les lignes d'un certain décalage jusqu'à la fin du jeu de résultats, vous pouvez utiliser un grand nombre pour le second paramètre. Cette instruction extrait toutes les lignes de la ligne 96ème à la dernière:

SELECT * FROM tbl LIMIT 95,18446744073709551615; 

De toute évidence, vous devez remplacer 95 par 10. Le grand nombre qu'ils utilisent est 2^64 - 1, soit dit en passant.

+5

Et si j'ai plus de 18446744073709551615 enregistrements? :-) – ceejayoz

+1

à 1 octet chacun, vous pourriez attendre un peu: P ~ 18pb ... – Kurru

+18

@ceejayoz: Alors vous avez une machine d'au moins 50 ans dans le futur et vous ne seriez probablement pas en train de programmer des requêtes MySQL: P – Thomas

89

Utilisez LIMIT avec deux paramètres. Par exemple, pour obtenir des résultats 11-60 (où 1 est la suite de la première rangée), utiliser:

SELECT * FROM foo LIMIT 10, 50 

Pour une solution à renvoyer tous les résultats, voir Thomas' answer.

+0

Que faire si certaines lignes sont supprimées entre le nombre que vous avez mentionné. –

61

Il y a un OFFSET et qui devrait faire l'affaire:

SELECT column FROM table 
LIMIT 10 OFFSET 10 
+1

Fonctionne avec Postgres aussi –

+0

plus facile à comprendre que 'limite 10,10' – shellbye

20

OFFSET est ce que vous recherchez.

SELECT * FROM table LIMIT 10 OFFSET 10 
1
select * from table where id not in (select id from table limit 10) 

id la clé de votre table.

+0

aucun gain d'efficacité ici – Isaac

+0

Ceci est utile et rapide à faire, pour l'impala et d'autres bases de données où la limite avec décalage nécessite un argument d'ordre qui n'est pas toujours souhaitable . –

+0

C'est la seule réponse qui réalise réellement ce que la question demande. Il obtient TOUS les résultats après les 10 premiers - parfait. Upvoted. – benjaminhull

Questions connexes