您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

MySQL选择多对多的位置

MySQL选择多对多的位置

假设您想要的不仅仅是文章的ID:

SELECT a.id
      ,a.other_stuff
  FROM articles a
  JOIN article_category ac
    ON ac.article_id = a.id
GROUP BY a.id
HAVING GROUP_CONCAT(DISTINCT ac.category_id ORDER BY ac.category_id SEPARATOR ',') = '1,2'

如果您想要的只是文章的ID,请尝试以下操作:

SELECT article_id
  FROM article_category 
GROUP BY article_id
HAVING GROUP_CONCAT(DISTINCT category_id ORDER BY category_id SEPARATOR ',') = '1,2'

请访问http://sqlfiddle.com/#!2/9d213/4实际操作

还应该补充一点这种方法的优点是它可以支持检查任何数量的类别,而不必更改查询。只需将“ 1,2”设置为字符串变量,然后更改传递给查询内容即可。因此,您可以通过传递字符串“ 1,2,7”来轻松搜索具有类别1、2和7的文章。无需其他联接。

MySQL 2022/1/1 18:52:37 有335人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶