数据库两个表交叉查询的问题

一张商品表a,
一张商品标签表b
表a一个商品对应一条记录
表b一个商品对应多条记录(多个标签)

请问我如何一次性取出满足一定条件的表a和表b的记录???
已做过以下尝试-
1.通过full join关联两表,但这样会导致表a数据大量重复(表a是主表,几十个字段,表b三个字段)
2.用条件查出满足条件的表a id,再对每个id分别查询表b数据,再通过程序合并,但效率仍然很低。
不知道各位有没有更好的办法??

阅读 2.1k
1 个回答

postgre, 一对多用数组

WITH C AS (SELECT 商品ID,ARRAY_AGG(标签) AS 标签 FROM B GROUP BY 商品ID)
SELECT A.*, 标签 FROM A LEFT JOIN C USING(商品ID) WHERE 你的条件
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题