Как выбрать два разных столбца? - PullRequest
0 голосов
/ 15 января 2020

Я хочу иметь возможность выбрать два отличных от col1 и col2, упорядоченных по id.

Я изо всех сил пытаюсь это сделать, потому что когда я пишу следующий SQL запрос ...

SELECT DISTINCT col1, col2
FROM table
ORDER BY id

Я не могу ORDER BY id, потому что его нет в инструкции SELECT, но если я добавлю id в инструкцию SELECT, он получит идентификатор DISTINCT, col1 и col2. По сути, это целая таблица, поскольку столбец идентификатора уникален.

Как мне это сделать?

Ответы [ 3 ]

2 голосов
/ 15 января 2020

Вы можете использовать агрегирование и поместить функцию агрегирования в предложение order by:

select col1, col2 from mytable group by col1, col2 order by min(id) limit 10
0 голосов
/ 15 января 2020

Если задача означает «если есть дубликаты на (col1, col2), то удалите все такие дубликаты, кроме одного с наибольшим значением id», тогда

SELECT DISTINCT MAX(id) OVER (PARTITION BY col1, col2) id, col1, col2
FROM sourcetable
ORDER BY id DESC /* not sure in this point */
LIMIT 10

PS. Почему "величайший"? из-за

Так что следует исключить строку 3, а НЕ строку 4, поскольку она дублируется.

Если запись с наименьшим необходимым значением id необходима, замените MAX ( ) до MIN ().

PPS. Кажется, настоящая задача - «Показать последние 10 оригинальных сообщений из истории чата».

0 голосов
/ 15 января 2020

Это один из способов сделать это:

select A.col1, A.col2
from 
(select id, col1, col2
from Tablet
order by id) A
left join 
(select min(id) id2, col1, col2
from Tablet
GROUP BY COL1, COL2) B
on A.COL1 = B.COL1 AND A.COL2=b.COL2
where A.id = B.id2
LIMIT 4;

Вот это DEMO

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...