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

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

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

4 ответов


в строке Номер? Если это так, я думаю, что это сработает:

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

MySQL не позволяет подзапросах выборки в текущей версии, верно?

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


выберите отдельный t1.столбцы из таблицы t1
Внутренняя таблица соединения t2 на t1.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.com/doc/refman/5.7/en/getting-unique-id.html