apg*_*apg 2 mysql database tags tagging
给出用于实现标签的SCHEMA
ITEM ItemId,ItemContent
标签TagId,TagName
ITEM_TAG ItemId,TagId
在使用标签选择时,限制返回的ITEMS数量的最佳方法是什么?
SELECT i.ItemContent, t.TagName FROM item i
INNER JOIN ItemTag it ON i.id = it.ItemId
INNER JOIN tag t ON t.id = it.TagId
Run Code Online (Sandbox Code Playgroud)
当然是最简单的方法可以让他们全部回来,但是使用限制子句会分解,因为你得到了每个标签的所有项目的副本,这些项目都计入LIMIT中的行数.
我的第二个解决方案使用MySQL函数GROUP_CONCAT()将匹配项的所有标记组合到结果集中以逗号分隔的字符串中.
SELECT i.ItemContent, GROUP_CONCAT(t.TagName ORDER BY t.TagName) AS TagList
FROM item AS i
INNER JOIN ItemTag AS it ON i.id = it.ItemId
INNER JOIN tag AS t ON t.id = it.TagId
GROUP BY i.ItemId;
Run Code Online (Sandbox Code Playgroud)
GROUP_CONCAT()函数是MySQL特性,它不是标准SQL的一部分.
| 归档时间: |
|
| 查看次数: |
1219 次 |
| 最近记录: |