Выберите отдельную запись и верните самую последнюю на основе столбца даты и времени - PullRequest
0 голосов
/ 10 февраля 2020

Я хотел бы получить среди всех моих записей только один пример на customer_id и выбрать тот, который содержит самый последний столбец updated_at. Вот что я попробовал:

SELECT  user_id,
        customer_id,
        MAX(updated_at)
FROM Customers
WHERE userid = 'xyz'
GROUP BY customer_id

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

Есть ли другой способ для достижения этой цели?

Ответы [ 2 ]

0 голосов
/ 10 февраля 2020

Вы можете использовать коррелированный подзапрос:

select c.*
from Customers c
where c.userid = 'xyz' and 
      c.updated_at = (select max(c1.updated_at) 
                      from Customers c1 
                      where c1.customer_id = c.customer_id
                     );
0 голосов
/ 10 февраля 2020

вы можете сделать это таким образом, просто показав выбранный столбец, не имея дело с группой, по

SELECT  *

FROM Customers a where not exists
(
select 1 from Customers b where a.userid = b.userid and a.updated_at < b.updated_at
)
WHERE userid = 'xyz' 
...