MySQL pomiń pierwsze 10 wyników


102

Czy istnieje sposób w MySQL na pominięcie pierwszych 10 wyników zapytania SELECT? Chciałbym, żeby działało jak LIMIT.


7
we wszystkich odpowiedziach brakuje klauzuli ORDER BY. Tabele SQL nie mają domyślnej kolejności, a bez wyraźnego ORDER BY nie ma sposobu, aby powiedzieć, które 10 wyników należy pominąć
fthiella

Odpowiedzi:


126

Użyj LIMIT z dwoma parametrami. Na przykład, aby zwrócić wyniki 11-60 (gdzie wynik 1 to pierwszy wiersz), użyj:

SELECT * FROM foo LIMIT 10, 50

Rozwiązanie umożliwiające zwrócenie wszystkich wyników można znaleźć w odpowiedzi Thomasa .


Co się stanie, jeśli niektóre wiersze zostaną usunięte między wymienioną liczbą.
Alex

93

Jest też OFFSET, który powinien załatwić sprawę:

SELECT column FROM table
LIMIT 10 OFFSET 10

7
łatwiejsze do zrozumienia niżlimit 10,10
widzenia,


33

Z instrukcji :

Aby pobrać wszystkie wiersze od określonego przesunięcia do końca zestawu wyników, możesz użyć dużej liczby dla drugiego parametru. Ta instrukcja pobiera wszystkie wiersze od 96. do ostatniego wiersza:

SELECT * FROM tbl LIMIT 95,18446744073709551615;

Oczywiście należy zamienić 95na 10. Nawiasem mówiąc, duża liczba, której używają, to 2 ^ 64 - 1.


6

LIMIT pozwala na pominięcie dowolnej liczby wierszy. Ma dwa parametry, a pierwszy z nich - ile wierszy ma zostać pominiętych


To wyjaśniło mi, że „What is Offset” Thanks @Col. Shrapnel
OM The Eternity

2
select * from table where id not in (select id from table limit 10)

gdzie idjest klucz w twoim stole.


Jest to przydatne i szybkie w przypadku impali i innych baz danych, w których limit z przesunięciem wymaga argumentu kolejności, który nie zawsze jest pożądany.
KarthikS

-5

Jeśli Twój stół ma zamawianie według identyfikatora, możesz to łatwo zrobić przez:

select * from table where id > 10
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.