对记录进行分组并对其本身进行排序

问题描述 投票:1回答:2

我在[[pricing表中有2列:car_idprice

我想

  • 将具有相同

    car_id

的记录分组,然后按price对其进行排序。 (即,必须连续列出具有相同car_id的所有记录。)
  • 我想按它们包含的最低价格对这些组进行排序。
  • 例如,

    car_id | price --------------- 1 | 2 1 | 5 2 | 3 2 | 1 2 | 10 3 | 7 3 | 3 3 | 8

    应该这样排序:

    car_id | price --------------- 2 | 1 2 | 3 2 | 10 1 | 2 1 | 5 3 | 3 3 | 7 3 | 8

    如何编写执行此操作的查询?我正在使用MySQL V5.6。
    mysql sql database grouping mysql-5.6
    2个回答
    0
    投票
    您可以在order by中使用窗口功能:

    select p.* from pricing p order by min(price) over (partition by car_id), car_id;

    car_id处理多个car_id具有相同最低价格的情况。

    在旧版本的MySQL中,您可以对子查询执行类似的操作:

    select p.* from pricing p order by (select min(p2.price) from pricing p2 where p2.car_id = p.car_id), car_id;


    0
    投票
    您可以使用子查询

    select *, ( select min(price) from datatab d2 where d1.car_id = d2.car_id ) min_price from datatab d1 order by min_price, price

    © www.soinside.com 2019 - 2024. All rights reserved.