MySQL: как выбрать все строки из таблицы, кроме последней

StackOverflow https://stackoverflow.com/questions/315621

  •  10-07-2019
  •  | 
  •  

Вопрос

У меня есть таблица с N строками, и я хочу выбрать N-1 рядов.

Предложения о том, как сделать это в одном запросе, если это возможно ..?

Это было полезно?

Решение

У последней строки самый высокий идентификатор? Если так, я думаю, это сработает:

SELECT * FROM TABLE WHERE ID != (SELECT MAX(ID) FROM TABLE)

MySQL разрешает выборки в текущей версии, верно?

Однако в большинстве случаев было бы лучше работать, если бы вы выбрали все строки, а затем отфильтровали нежелательные данные в своем приложении.

Другие советы

ВЫБЕРИТЕ DISTINCT t1.columns ОТ таблицы t1
ВНУТРЕННЕЕ СОЕДИНЕНИЕ таблица t2 ON t1.id & Lt; t2.id

По моему опыту, MySQL любит эту технику, возвращаясь к нескольким версиям.

Другая техника, которую я здесь не вижу, это

SELECT * FROM table ORDER BY id DESC LIMIT 10000 OFFSET 1;

Это даст вам записи, упорядоченные по потомку id, кроме первого, то есть, кроме последнего в исходном порядке.
Обратите внимание, что с помощью этого метода вы возьмете только 10000 записей, однако это число может быть настолько высоким, насколько вы хотите, но не может быть опущено.
Преимущество этого метода в том, что вы можете делать заказы по своему усмотрению.
Недостатком является то, что он предоставляет вам записи, упорядоченные по порядку. Наконец, стоит отметить, что другие методы здесь работают довольно хорошо

Другой способ сделать это может быть:

SELECT * FROM table WHERE ID <> LAST_INSERT_ID()

Ссылка: http: //dev.mysql. ком / док / RefMan / 5,7 / о / получение уникального-id.html

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top