2013-06-04 3 views
2

Я создал таблицу, которая содержит не менее 100 строк. Когда я хочу получить элемент, я делаю следующий код ниже. Это вернет элементы с идентификатором между 11 и 28. Моя цель состоит в том, чтобы иметь возможность повторять последние элементы, которые являются 28. Как я могу достичь этого в mysql?Как выбрать последнюю строку в mysql

SELECT names 
FROM item_list 
WHERE id >= 10 
LIMIT 18 
+0

Я хочу повторить последние пункты на странице – user2310422

+3

вы попробовали 'LIMIT 17, 1'? –

+0

Это решило мою проблему^ – user2310422

ответ

7

Ваш исходный запрос будет фактически возвращать строки с 10 по 27

| ID | 
------ 
| 10 | 
| 11 | 
| 12 | 
| 13 | 
| 14 | 
| 15 | 
| 16 | 
| 17 | 
| 18 | 
| 19 | 
| 20 | 
| 21 | 
| 22 | 
| 23 | 
| 24 | 
| 25 | 
| 26 | 
| 27 |

Чтобы получить 28-ю строку, вы можете использовать

WHERE id >= 10 
LIMIT 18, 1 

See a demo

Или просто

LIMIT 27, 1 

See a demo

Предложения LIMIT может использоваться для ограничения количества строк, возвращаемых SELECT заявления.

SELECT * FROM tbl LIMIT 5,10; # Retrieve rows 6-15 
SELECT * FROM tbl LIMIT 95,18446744073709551615; # Retrieves rows from the 96th row to the last 

Другими словами, LIMIT row_count эквивалентно LIMIT 0, row_count.

+1

Это возвращает самый последний результат, который является 100 – user2310422

+1

Я сделал, как вы предложили, я сделал SELECT имена FROM item_list WHERE ID> = 10 ORDER BY ID DESC LIMIT 1. Он по-прежнему дает мне самый последний результат, который равен 100, а не 28 – user2310422

+0

Это очень странно, так как демо работает так, как ожидалось.Расскажите, пожалуйста, что не так с демо, или отредактируйте свой вопрос, чтобы показать, чего вы действительно хотите. – nurdglaw

2

Это зависит от того, действительно ли это то, что вы хотите сделать, но эти варианты могут быть близки:

SELECT names FROM item_list WHERE id = 28 

или ...

SELECT names FROM item_list WHERE id <= 28 ORDER BY id DESC LIMIT 1 

или даже ...

SELECT * FROM (SELECT names FROM item_list WHERE id >= 10 LIMIT 18 ORDER BY id DESC) LIMIT 1 

Еще один (более чистый, чем предыдущий, но дольше), для развлечения:

SELECT names 
    FROM ( 
     SELECT id, names 
     FROM item_list 
     WHERE id >= 10 
     ORDER BY id 
     LIMIT 18) subQ 
ORDER BY id DESC 
LIMIT 1 

Это не 100% ясно, что вы/на самом деле/​​хотите получить как список ваших изменений - но, надеюсь, эти примеры будут направлять вас на правильные биты документации!

+0

Это дает мне сообщение об ошибке «Каждая производная таблица должна иметь свой собственный псевдоним» – user2310422

+1

только что отсутствующий здесь не дает псевдонима в подзапросе ':)' я обновлю это. –

+1

не нужно также заказывать подзапрос, так как он не гарантирует порядок возврата записей? –

0

Вы можете сделать заказ с помощью ограничения в mysql.

выберите * от заказа table_name пределом ID по убыванию 0,1

Здесь идентификатор значение автоматического приращения.

Смежные вопросы