2017-05-07 62 views
1

这里是我的查询:如何选择最后2个最后使用的标签?

SELECT * FROM (
    SELECT count(*) cnt, * FROM articles_tag 
     GROUP BY tag_id 
) x 

ORDER BY cnt 
LIMIT 2 

但在近(第一行抛出一个语法错误。我该如何解决它?


我想选择最后使用的2个标签。

// articles_tag 
+----+------------+--------+ 
| id | article_id | tag_id | 
+----+------------+--------+ 
| 1 | 123  | 4  | 
| 2 | 456  | 3  | 
| 3 | 789  | 6  | 
| 4 | 123  | 3  | 
| 5 | 456  | 6  | 
| 6 | 987  | 2  | 
+----+------------+--------+ 

预期结果:

+--------+ 
| tag_id | 
+--------+ 
| 3  | 
| 6  | 
+--------+ 
+0

嗨。你的语法是一团糟。你究竟在做什么:) –

+0

请发布样本数据和期望的结果 –

+0

你的问题和样本查询是如此遥远。你的头衔说20但你有限10,你提到最后使用的标签,但你的查询试图得到一个计数..这里发生了什么? –

回答

2

我想你的意思

select tag_id,count(*) as cnt from articles_tag group by tag_id order by count(*) limit 2 
+0

正确,谢谢,upvote –

+0

或者只是'按cnt desc排序' – Rahul

+0

按次数排列(*)将适用于所有的口味...... –

1

你不需要子选择,算了算的出现,descendantly命令他们,并限制选择2

所以它会是:

SELECT tag_id, COUNT(tag_id) occurrences FROM articles_tag 
GROUP BY tag_id 
ORDER BY occurrences DESC 
LIMIT 2 
+0

谢谢.. upvote –