所以我想为我的帖子系统找到发布最多的主题标签。所以这就是我的posts
表格的样子
+--------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+------------------+------+-----+---------+----------------+
| id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| post_user | varchar(255) | NO | | | |
| post_ip | varchar(255) | NO | | | |
| post_date | varchar(255) | NO | | | |
| post_content | varchar(40) | NO | | | |
| post_likes | varchar(255) | YES | | NULL | |
| hashtag | varchar(255) | YES | | NULL | |
+--------------+------------------+------+-----+---------+----------------+
现在我想查询并找到最常用的hashtag
。所以如果我有两个带有#{1}}标签的帖子,它会返回猫的数量,即cats
。然后我按降序排序。所以猫是2
,狗是2
。所以基本上主要的问题是如何获得最“标记”的标签。
答案 0 :(得分:4)
您的SQL看起来像:
SELECT count(hashtag) as c, hashtag FROM posts WHERE hashtag IS NOT NULL GROUP BY hashtag ORDER BY c DESC
这将返回主题标签列表,按大多数使用排序。响应将有两列:c,标签计数和标签本身。
如果您只想要最常用的标签:
SELECT count(hashtag) as c, hashtag FROM posts WHERE hashtag IS NOT NULL GROUP BY hashtag ORDER BY c DESC LIMIT 1
此表格设计将您限制为每个帖子一个#标签。如果您希望允许帖子有多个主题标签,则需要更多表格。 Hashtags和帖子具有多对多关系:帖子可以有很多标签,标签可以用在很多帖子中。要对此进行建模,您需要一个用于标签的表,以及一个连接帖子和标签的表。 hashtag表可以只有一个ID列和一个标记列。联结表将具有post id列和标记ID列。要将标记与post关联,请在联结表中添加一行以引用标记和帖子。然后,您可以从posts表中删除hashtag列。