通过评级ASC订单不在mysql中工作

时间:2014-07-25 08:49:46

标签: mysql sql

请查看 sqlfiddle

我正在进行产品评论页面,其中会显示几个已批准的评论以及对每个评论的已批准回复。在TYPE字段中,0表示评论其中1表示其对其中一条评论的回复。不允许回复者对产品进行评级,因此rating字段中的回复率为NULL。 ID_GROUP表示回复所属的评论。

我在这个thread

中收到了用户John Ruddell的以下声明
SELECT pr.*, 
IF( @A = t.id_group, 
   IF(pr.type = 0, 1, 
      IF(@B = 5, @B := 1, @B := @B +1) ), @B ) 
AS group_col, @A := t.id_group 
FROM ( SELECT DISTINCT id, id_group 
      FROM `product_review` 
      WHERE type ='0' 
      AND approved <> '0' 
      GROUP BY id_group 
      ORDER BY rating ASC // <-- This doesn't work
      LIMIT 0, 5 ) t 
JOIN `product_review` pr 
ON pr.id_group=t.id_group 
CROSS JOIN (SELECT @A := '', @B := 1) AS temp 
WHERE approved <> '0'
GROUP BY group_col, id_group 
ORDER BY id_group,time ASC

它工作正常。但是,我不能通过在第11行添加额外的ORDER BY rating ASC来产生以下结果:

ID  USERNAME    ID_GROUP    TYPE    RATING  APPROVED    TIME    GROUP_COL
5   Tommy          5         0        2        1    1406937041     2    
9   Sally          5         1      (null)     1    1407871782     3    
3   May            3         0        3        1    1406237410     2    
7   Sam            3         1      (null)     1    1406999453     3    
1   Tom            1         0        5        1    1406232341     1    
2   Peter          1         1      (null)     1    1406237052     2

有谁能告诉我如何获得此输出?

1 个答案:

答案 0 :(得分:1)

DESC排序时添加id_group说明符,如下所示:

ORDER BY id_group DESC, time ASC

SQLFiddle