Mysql 为列的每个唯一值选择前一条记录

Mysql 为列的每个唯一值选择前一条记录,mysql,sql,sql-order-by,Mysql,Sql,Sql Order By,我有这张桌子的结构 请求_id(来自其他表的F.K) 用户id 价格 我想要按价格排名前一的订单,但对于每个请求id的唯一值,例如,如果我 request_id user_id price 1, 1, 100 1, 2, 200 1, 3, 300 2, 2, 10 2, 1, 20 2,

我有这张桌子的结构

  • 请求_id(来自其他表的F.K)
  • 用户id
  • 价格
我想要按价格排名前一的订单,但对于每个请求id的唯一值,例如,如果我

request_id  user_id price
       1,       1,  100
       1,       2,  200
       1,       3,  300                     
       2,       2,  10
       2,       1,  20
       2,       3,  30
那么期望的结果将是:

request_id  user_id price
       1,       1,  100
       2,       2,  10

选择用户id,按价格限制从请求订单中选择价格1

请以表格形式重新格式化数据和所需输出。
SELECT x.* 
  FROM my_table x
  JOIN 
     ( SELECT request_id,MIN(price) min_price FROM my_table GROUP BY request_id )y
    ON y.request_id = x.request_id
   AND y.min_price = x.price;