当前位置:  开发笔记 > 后端 > 正文

MySQL与多对多关系的限制

如何解决《MySQL与多对多关系的限制》经验,为你挑选了1个好方法。

给出用于实现标签的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 

当然是最简单的方法可以让他们全部回来,但是使用限制子句会分解,因为你得到了每个标签的所有项目的副本,这些项目都计入LIMIT中的行数.



1> Bill Karwin..:

我的第二个解决方案使用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;

GROUP_CONCAT()函数是MySQL特性,它不是标准SQL的一部分.

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有