как выбрать самые последние записи - PullRequest
0 голосов
/ 06 июня 2018

enter image description here

Выберите идентификатор, имя, максимум (modify_time) из группы клиентов по идентификатору, имени

, но я получаю все записи.

Ответы [ 3 ]

0 голосов
/ 06 июня 2018

Причина, по которой вы получаете всю таблицу в результате, заключается в том, что вы группируете по ИД И ИМЕНИ.Это означает, что каждая уникальная комбинация идентификатора и имени возвращается.И поскольку все имена для идентификатора различны, возвращается вся таблица.

Если вы хотите последнюю модификацию для идентификатора (или имени), вам следует группировать только по идентификатору (или имени соответственно).

0 голосов
/ 06 июня 2018

Упорядочить по modify_time desc и использовать row_number для нумерации строки для идентификатора, комбинации имен. Затем выберите каждую комбинацию с row_number = 1

select id,modify_time,name
from (
        select id,modify_time,name,row_number() over(partition by id order by modify_time desc) as r_no
        from customer
     ) a
where a.r_no=1
0 голосов
/ 06 июня 2018

Идентификаторы уникальны, что означает, что группировка их по идентификатору приведет к одной и той же таблице.

Я бы предложил упорядочить таблицу по убыванию "modify_time" и ограничить результат 1 (возможночто-то вроде следующего):

Select id, name modify_time from customer ORDER BY modify_time DESC limit 1
...