为每个用户选择最后一个条目

Eri*_*eau 2 mysql sql greatest-n-per-group

我有一个带有字段 - >的TABLE user_orders

  • order_id int(10),
  • user_id int(10),
  • order_payment_id int(10)
  • order_created int(10)

我想找到每个user_id使用的最后一个order_payment_id.我试试

SELECT order_payment_id, user_id , MAX(order_id) as lastone
FROM user_orders 
GROUP BY user_id;
Run Code Online (Sandbox Code Playgroud)

但结果是错误的

jue*_*n d 6

您可以使用自联接来过滤掉相关数据

SELECT o1.*
FROM user_orders o1
JOIN
(
   SELECT user_id, MAX(order_created) as lastone 
   FROM user_orders
   GROUP BY user_id
) o2 on o1.user_id = o2.user_id 
    and o1.order_created = o2.lastone
GROUP BY o1.user_id
Run Code Online (Sandbox Code Playgroud)