请查看 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
有谁能告诉我如何获得此输出?