mysql按视图限制但按字母顺序排序?

时间:2011-12-02 19:02:42

标签: php mysql

我有一张桌子,我想拍下20位最受欢迎的歌手并按字母顺序排列他们(这20位歌手)。

   id    name         hit
    ----------------
    1     Beyonce      2540
    2     Eminem       1432
    3     Pink         1642
    4     Shakira      1234
    .
    .

例如我使用此代码

$query = mysql_query("SELECT * FROM pm_categories ORDER BY hit DESC limit 20");

我选择了最多的20个,但我也想按字母顺序排序。 我怎么能这样做?

2 个答案:

答案 0 :(得分:4)

这应该这样做:

SELECT *
FROM pm_categories
WHERE id IN (
  SELECT id
  FROM pm_categories
  ORDER BY hit DESC
  LIMIT 20
) ORDER BY name

您需要单独根据匹配进行查询,然后使用前20个ID来按名称查询和排序。

由于你有一个旧版本的mysql,你需要做一个连接。

SELECT cat.*
FROM (
  SELECT id
  FROM pm_categories
  ORDER BY hit DESC
  LIMIT 20
) top_hits
JOIN pm_categories cat ON top_hits.id = cat.id
ORDER BY cat.name

答案 1 :(得分:0)

尝试

    $query = mysql_query("SELECT * FROM pm_categories ORDER BY hit DESC, name ASC limit 20");