0

次の mySQL クエリを使用して、計算フィールドで並べ替えられた行を対応する行位置に指定します。テンプレートとしてhereのOMG Ponies コードを使用しましたが、行が間違って番号付けされて戻ってきます (ソートなしでキー (gemid) 順に番号付けされています)。GROUP BY の JOIN に関係していることは知っていますが、修正方法は知っています。前もって感謝します。

SELECT g.gemid, sum_rating, @rownum := @rownum + 1 AS row_num FROM gems g
    LEFT JOIN (SELECT gemid, SUM(rating) as sum_rating from gemrating GROUP BY gemid) rt ON g.gemid = rt.gemid 
    JOIN (SELECT @rownum := 0) Z 
    WHERE g.grade = '8'  
    ORDER BY sum_rating asc

出力は次のようになります。

gemid    sum_rating    row_num
------   ------------  ----------
2           10           1
4           25           2
1           40           3
3           41           4

代わりに戻ってきます:

gemid    sum_rating    row_num
------   ------------  ----------
2           10           2
4           25           4
1           40           1
3           41           3
4

1 に答える 1

0

これは機能するようです。レコードに番号を付ける前にまずレコードを並べ替え、次に順序付きリストから SELECT する必要があることはわかっていました。

SELECT g2.gemid, g2.sum_rating, @rownum := @rownum + 1 AS row_num FROM 

(SELECT g.gemid, rt.sum_rating, g.grade FROM gems g
    LEFT JOIN (SELECT gemid, SUM(rating) as sum_rating from gemrating GROUP BY gemid) rt ON g.gemid = rt.gemid 
 WHERE g.grade = '8'  ) g2

    JOIN (SELECT @rownum := 0) Z 
    WHERE g2.grade = '8'  
    ORDER BY sum_rating asc
于 2013-11-01T07:00:29.837 に答える