MySQL пропустив перші 10 результатів


102

Чи є спосіб у MySQL пропустити перші 10 результатів із запиту SELECT? Мені б хотілося, щоб він працював на кшталт LIMIT.


7
у всіх відповідях тут відсутнє пункт ЗАМОВИТИ ЗА. У таблицях SQL немає порядку за замовчуванням, і без явного ЗАМОВЛЕННЯ немає способу сказати, які перші 10 результатів можна пропустити
fthiella

Відповіді:


125

Використовуйте LIMIT з двома параметрами. Наприклад, щоб повернути результати 11-60 (де результат 1 - перший рядок), використовуйте:

SELECT * FROM foo LIMIT 10, 50

Щоб рішення повернути всі результати, див відповідь Томаса .


Що робити, якщо деякі рядки будуть видалені між вказаним вами номером.
Олексій

91

Також існує OFFSET, який повинен зробити трюк:

SELECT column FROM table
LIMIT 10 OFFSET 10

7
легше зрозуміти, ніжlimit 10,10
shellbye


33

З посібника :

Щоб отримати всі рядки від певного зміщення до кінця набору результатів, ви можете використовувати деяке велике число для другого параметра. Це твердження отримує всі рядки з 96-го ряду до останнього:

SELECT * FROM tbl LIMIT 95,18446744073709551615;

Очевидно, ви повинні замінити 95на 10. Велика кількість, яку вони використовують, до речі 2 ^ 64 - 1.


5

LIMIT дозволяє пропускати будь-яку кількість рядків. Він має два параметри, і перший з них - скільки рядків пропустити


Це дало мені зрозуміти, що "Що таке зміщення" Дякую @Col. Шрапнель
ОМ Вічність

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

де idбути ключем у вашій таблиці.


Це корисно і швидко зробити для імпал та інших баз даних, де ліміт із зміщенням вимагає аргументу порядку, який не завжди бажаний.
KarthikS

-5

Якщо ваша таблиця має впорядкування за ідентифікатором, ви можете легко виконати:

select * from table where id > 10
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.