使用MySQL计算标记最多的标记

Jac*_*ack 1 php mysql tags codeigniter

我的问题是,我正在尝试计算用户提交的代码表中最常使用的标记.但问题在于数据库结构.

我正在使用的当前查询是这样的:

SELECT tag1, COUNT(tag1) AS counttag 
FROM code 
GROUP BY tag1 
ORDER BY counttag DESC LIMIT 1
Run Code Online (Sandbox Code Playgroud)

这很好,除了它只计算tag1最常出现 - 我的数据库每个帖子有5个标签 - 所以有tag1,tag2,tag3,tag4,tag5列.如何从一个查询中的所有5列中获取最高出现的标记值?

插口

mar*_*_dj 9

你应该制作2-3张桌子.我通常做3:

  • ID

code_tags:

  • code_id
  • TAG_ID

标签:

  • ID
  • 名称

要进行显示所用标记数量的查询:

   SELECT t.*, COUNT(tag_id) as code_count 
     FROM code_tags ct 
LEFT JOIN tags t ON ct.tag_id = t.id 
 GROUP BY tag_id 
 ORDER BY code_count DESC 
    LIMIT 1
Run Code Online (Sandbox Code Playgroud)