MySQL组数据,每组有2个结果和顺序

时间:2017-09-14 11:07:43

标签: mysql

我有一个数据库表,数据如下所示。我想从以下条件中选择此表中的数据。

选择product_id为1的所有记录。然后获取每个group_id的两条记录,其中manual 1被选中manual 0。然后按{{1}排序} DESC。

这应该给我以下结果:

score

这只能在一个(简单)查询中实现吗?

CREATE和INSERT语句;

id | product_id | group_id | manual | score
-------------------------------------------
 6 |          1 |        4 |      1 |   400
 1 |          1 |        7 |      0 |  1000
 2 |          1 |        7 |      0 |   900
 5 |          1 |        4 |      0 |   600

1 个答案:

答案 0 :(得分:1)

请勿拨打电话table。这很烦人。无论如何...

    SELECT id
         , product_id
         , group_id
         , manual
         , score
      FROM 
         ( SELECT x.*
                , CASE WHEN @prev = group_id THEN @i := @i+1 ELSE @i := 1 END i
                , @prev := group_id 
             FROM `table` x
                , (SELECT @prev:=null,@i:=0) vars 
            ORDER 
               BY group_id DESC
                , manual <> 1
                , score DESC
         ) n
     WHERE i <= 2
     ORDER 
        BY group_id DESC
         , manual <> 1
         , score DESC;