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

标签 mysql sql sql-order-by

我有这个表结构

  • request_id(来自其他表的 F.K)
  • 用户编号
  • 价格

我想要按价格排序的前一条记录,但对于 request_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

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

关于mysql - 为列的每个唯一值选择前一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24829447/

相关文章:

mysql - 创建 Hibernate JPA View

MySQL 连接查询或子查询

c# - 如何在不更改其类型的情况下订购 IGrouping?

mysql - 获取前 5 名总结果

Mysql 根据多列选择唯一记录并仅显示组和总金额

php - INSERT INTO 表 VALUES.. 与 INSERT INTO 表 SET 错误

mysql - 根据分组依据查询最后 N 行

sql - 使用 if else 创建 View

sql - 试图让最小日期超出设置

mysql - 复杂的 MySQL 排序