ORDER BY FIELD中值的MySQL子查询

时间:2011-12-08 13:46:31

标签: mysql subquery

我正在尝试编写一个查询,以获得最流行歌曲的最高分数,按歌曲流行顺序排列。

我有一个名为“gameplay”的表格,其中包含以下字段:

  • ID
  • song_id
  • 得分
  • (加上其他一些任意字段)

到目前为止,我最接近的是:

SELECT id, song_id, score
FROM (
    SELECT id, song_id, score
    FROM (
        SELECT id, song_id, score
        FROM gameplay
        ORDER BY score DESC
        ) AS all_scores_in_order
    GROUP BY song_id
    ) AS top_scores_per_song
ORDER BY FIELD (song_id, 3,1,2)

但我希望ORDER BY FIELD中的值由另一个子查询生成 - 按受欢迎程度排序的song_id(按照计算表中行出现的顺序),即。

SELECT song_id
FROM gameplay
GROUP BY song_id
ORDER BY count( id ) DESC

1 个答案:

答案 0 :(得分:1)

你不能只是在外部查询中按Count(id)分组然后排序吗?

这应显示按出现次数排序的所有排序,并显示最高得分:

SELECT song_id, COUNT(id), MAX(score)
FROM gameplay
GROUP BY song_id
ORDER count(id) DESC

或者您希望每首song_id多次出现?