MySQL ignore les 10 premiers résultats

102

Existe-t-il un moyen dans MySQL de faire ignorer les 10 premiers résultats d'une requête SELECT? J'aimerais que ça marche quelque chose comme LIMIT.

Brian
la source
7
il manque une clause ORDER BY dans toutes les réponses ici. 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éponses:

125

Utilisez LIMIT avec deux paramètres. Par exemple, pour renvoyer les résultats 11-60 (où le résultat 1 est la première ligne), utilisez:

SELECT * FROM foo LIMIT 10, 50

Pour une solution pour renvoyer tous les résultats, voir la réponse de Thomas .

Dominic Rodger
la source
Que faire si certaines lignes sont supprimées entre le numéro que vous avez mentionné.
Alex
92

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

SELECT column FROM table
LIMIT 10 OFFSET 10
Jamesaharvey
la source
7
plus facile à comprendre quelimit 10,10
shellbye
40

OFFSET est ce que vous recherchez.

SELECT * FROM table LIMIT 10 OFFSET 10
Trigonométrie
la source
33

À partir du manuel :

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 deuxième paramètre. Cette instruction récupère toutes les lignes de la 96e ligne à la dernière:

SELECT * FROM tbl LIMIT 95,18446744073709551615;

Évidemment, vous devriez remplacer 95par 10. Le grand nombre qu'ils utilisent est 2 ^ 64 - 1, au fait.

Thomas
la source
5

LIMIT vous permet de sauter n'importe quel nombre de lignes. Il a deux paramètres, et le premier d'entre eux - combien de lignes à ignorer

Votre bon sens
la source
Cela m'a fait comprendre que "Qu'est-ce que Offset" Merci @Col. Shrapnel
OM The Eternity
2
select * from table where id not in (select id from table limit 10)

idest la clé de votre table.

Mickeymoon
la source
C'est utile et rapide à faire, pour impala et autres bases de données où la limite avec offset nécessite un argument d'ordre qui n'est pas toujours souhaitable.
KarthikS
-5

Si votre table est triée par identifiant, vous pouvez facilement le faire en:

select * from table where id > 10
Biswajit Paul
la source