只是想知道是否可以获得前 10 COUNT 个结果并按 COUNT 和字母顺序排序?
我有下表,
tags
-------
id | title
.
tagged
------
tag_id | post_id
以及以下 SQL 查询
SELECT tag.*, COUNT(td.tag_ID) AS tagcount
FROM Tagged td
LEFT JOIN Tags tag ON td.tag_ID = tag.tag_ID
GROUP BY td.tag_ID
ORDER BY tagcount DESC, tag.tag_Title ASC
有什么想法吗?
提前致谢
编辑
抱歉,如果我没有正确解释。
查询有效,但我没有添加 LIMIT 10,因为我想先查看整个结果集。
我的查询有效,但是在以下示例结果中
tag_ID tag_Title tagcount
1 Science 3
3 Chemistry 2
4 Misc 1
5 Maths 1
2 Sport 1
不过,我希望化学高于科学。
即计数最高的前十名..按字母顺序排序
结果
谢谢你们……丹尼尔和斯莱德。
这是一个工作示例
(
SELECT t.*, COUNT(*) AS tagcount
FROM tagged td
LEFT JOIN tags t ON (t.id = td.tag_id)
GROUP BY td.tag_id
ORDER BY tagcount DESC, t.title ASC
LIMIT 3
) ORDER BY title ASC;
最佳答案
更新:
下面的新评论:
(
SELECT t.*, COUNT(*) AS tagcount
FROM tagged td
LEFT JOIN tags t ON (t.id = td.tag_id)
GROUP BY td.tag_id
ORDER BY tagcount DESC, t.title ASC
LIMIT 3
) ORDER BY title ASC;
结果:
+------+------------+----------+
| id | title | tagcount |
+------+------------+----------+
| 3 | javascript | 2 |
| 1 | mysql | 2 |
| 2 | php | 3 |
+------+------------+----------+
3 rows in set (0.00 sec)
只需将 LIMIT 3
更改为 LIMIT 10
即可获取前 10 个而不是前 3 个。
上一个答案:
为什么不在查询中添加LIMIT 10
?
SELECT t.*, COUNT(*) AS tagcount
FROM tagged td
LEFT JOIN tags t ON (t.id = td.tag_id)
GROUP BY td.tag_id
ORDER BY tagcount DESC, t.title ASC
LIMIT 10;
测试用例:
CREATE TABLE tags (id int, title varchar(20));
CREATE TABLE tagged (tag_id int, post_id int);
INSERT INTO tags VALUES (1, 'mysql');
INSERT INTO tags VALUES (2, 'php');
INSERT INTO tags VALUES (3, 'javascript');
INSERT INTO tags VALUES (4, 'c');
INSERT INTO tagged VALUES (1, 1);
INSERT INTO tagged VALUES (2, 1);
INSERT INTO tagged VALUES (1, 2);
INSERT INTO tagged VALUES (2, 2);
INSERT INTO tagged VALUES (3, 3);
INSERT INTO tagged VALUES (2, 4);
INSERT INTO tagged VALUES (3, 4);
INSERT INTO tagged VALUES (4, 5);
结果(使用LIMIT 3
):
+------+------------+----------+
| id | title | tagcount |
+------+------------+----------+
| 2 | php | 3 |
| 3 | javascript | 2 |
| 1 | mysql | 2 |
+------+------------+----------+
3 rows in set (0.00 sec)
请注意 [c]
标记如何从前 3 个结果中脱颖而出,并且在出现平局的情况下,行按字母顺序排序。
关于mysql - 对 MYSQL 标签表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3661676/