【发布时间】:2019-12-04 21:36:14
【问题描述】:
我有一个包含三个表的关系数据库:
hieroglyphs hieroglyph_has_search_tag search_tags
------------------- --------------------------------- -------------------
| id | hieroglyph | | hieroglyph_id | search_tag_id | | id | search_tag |
-----+------------- --------------------------------- -------------------
我想创建一个查询,允许我使用一个或多个搜索标签搜索象形文字,按匹配数对结果进行排序和分组(匹配最多的象形文字应该在列表中排在第一位)和带有较少的搜索标签将占据较低的行。
这是结果应该如何显示的示例(输入的搜索标签:man, sitting, arms up):
+----+---------+
| A1 | man |
| A1 | sitting |
| A1 | arms up |
| A2 | man |
| A2 | sitting |
| A3 | man |
+----+---------+
然后得到这样的东西:
+----+---+
| A1 | 3 |
| A2 | 2 |
| A3 | 1 |
+----+---+
这就是我使用 MySQL 查询的结果:
SELECT hieroglyphs.hieroglyph, search_tags.search_tag
FROM hieroglyph_has_search_tag
JOIN hieroglyphs ON hieroglyph_has_search_tag.hieroglyph_id = hieroglyphs.id
JOIN search_tags ON hieroglyph_has_search_tag.search_tag_id = search_tags.id
WHERE search_tag = "man" OR search_tag = "sitting" OR search_tag = "arms up"
我读到我应该使用COUNT()、GROUP BY 和ORDER BY,但我没有找到如何实现这些以使我的 MySQL 查询按我想要的方式工作的解决方案。我将不胜感激。
【问题讨论】:
标签: mysql select count match sql-order-by