mysql выберите последние 3 различных строки, но по возрастанию - PullRequest
0 голосов
/ 29 января 2020

Я пытаюсь выбрать отдельный столбец из последних 3 строк таблицы и затем упорядочить его по возрастанию.

Любая помощь приветствуется.

Приведенный ниже код выдает мне следующую ошибку: «Неизвестный столбец« entry_id »в« предложении заказа »»

SELECT * FROM (
    SELECT distinct(column) as sem FROM table ORDER BY entry_id DESC LIMIT 3
) sub
ORDER BY entry_id ASC

1 Ответ

1 голос
/ 29 января 2020

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

Это сложно, поскольку в подзапросе используется distinct. Как прокомментировал Barmar, добавление entry_id к предложению select distinct может нарушить distinct, поэтому мы можем вместо этого включить агрегирование:

SELECT column FROM (
    SELECT column, max(entry_id) max_entry_id as sem 
    FROM table 
    ORDER BY max_entry_id DESC LIMIT 3
) sub
ORDER BY max_entry_id 

Примечание: distinct не является функцией, поэтому это подразумевает скобки.

...