2010-05-13 17 views
72

Czy istnieje sposób w MySQL, aby pierwszy 10 wynik z zapytania SELECT został pominięty? Chciałbym, żeby działało jak LIMIT.MySQL pomiń pierwsze 10 wyników

+6

wszystkie odpowiedzi tutaj nie zawierają klauzuli ORDER BY. Tabele SQL nie mają domyślnej kolejności, a bez jawnego ORDER BY nie można określić, które są pierwsze 10 wyników, aby pominąć – fthiella

Odpowiedz

5

LIMIT pozwala pominąć dowolną liczbę wierszy. Ma dwa parametry, a pierwszy z nich - ile wierszy pominąć

+0

To pozwoliło mi wyjaśnić, że "Co to jest przesunięcie" Dzięki @Col. Shrapnel –

24

Z manual:

Aby pobrać wszystkie wiersze z pewnego przesunięcia do możesz końca zbioru wynikowego użyj dużej liczby dla drugiego parametru. To stwierdzenie pobiera wszystkie wiersze z 96. do ostatniego wiersza:

SELECT * FROM tbl LIMIT 95,18446744073709551615; 

Oczywiście, należy wymienić 95 przez 10. Ich duża liczba to 2^64 - 1, nawiasem mówiąc.

+5

Co zrobić, jeśli mam więcej niż 18446744073709551615 rekordów? :-) – ceejayoz

+1

po 1 bajcie każdy, możesz poczekać chwilę: P ~ 18pB ... – Kurru

+18

@ceejayoz: To masz maszynę od co najmniej 50 lat w przyszłości i prawdopodobnie nie będziesz programował zapytań MySQL: P – Thomas

89

Użyj LIMIT z dwoma parametrami. Na przykład, do powrotu wyniki 11-60 (gdzie wynik 1 jest w pierwszym wierszu), należy:

SELECT * FROM foo LIMIT 10, 50 

rozwiązania powrót wszystkich wyników patrz Thomas' answer.

+0

Co zrobić, jeśli niektóre wiersze zostaną usunięte między podanym numerem. –

61

występuje przesunięcie również, że powinno załatwić sprawę:

SELECT column FROM table 
LIMIT 10 OFFSET 10 
+1

Działa również z Postgresami –

+0

łatwiej zrozumieć niż "ograniczenie 10,10" – shellbye

20

OFFSET jest to, czego szukasz.

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

gdzie id być kluczem w tabeli.

+0

brak przyrostu wydajności tutaj – Isaac

+0

Jest to przydatne i szybkie do zrobienia, dla impala i innych baz danych, gdzie limit z offsetem wymaga argumentu zamówienia, który nie zawsze jest pożądany . –

+0

Jest to jedyna odpowiedź, która faktycznie pozwala uzyskać odpowiedź na pytanie. Otrzymuje WSZYSTKIE wyniki po pierwszych 10 - doskonały. Rewizja. – benjaminhull

Powiązane problemy