简体   繁体   English

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

[英]Select top one record for each unique value of column

I've this table structure 我有这个表结构

  • request_id (FK from some other table) request_id(来自其他表的FK)
  • user_id 用户身份
  • price 价钱

I want top one record order by price but for each unique value of request_id, for example say if I've 我想按价格但按请求ID的每个唯一值来排在前一个记录顺序,例如说是否

request_id  user_id price
       1,       1,  100
       1,       2,  200
       1,       3,  300                     
       2,       2,  10
       2,       1,  20
       2,       3,  30

Then the desired result would be: 那么所需的结果将是:

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

SELECT user_id,price FROM request ORDER BY price LIMIT 1 SELECT user_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;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM