我有一张桌子,我想拍下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个,但我也想按字母顺序排序。 我怎么能这样做?
答案 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");