2015-05-29 81 views
-2

MySQL查询mysql命令匹配

select t.text from topic t 
inner join tag tg on tg.topic_id = t.id where tg.id in (3,4,5,6,7) 

现在我怎么可以为了这些结果从最大到IN子句匹配的最小值。

更新 - 对于那些谁建议增加order by tg.id desc之间 - 请不要误解它的标签ID的个人价值订单不是由IN子句匹配值的数量。

回答

5

你应该加入您的表从tagtopic_id一套这样的分组:

select t.text from topic t 
inner join 
(SELECT topic_id, COUNT(id) tags_count 
    FROM tag WHERE id IN (3,4,5,6,7) 
    GROUP BY topic_id 
) tg on tg.topic_id = t.id 
ORDER BY tg.tags_count DESC 
-1

试试这个

select t.text from topic t 
inner join tag tg on tg.topic_id = t.id where tg.id in (3,4,5,6,7) 
order by tg.id desc