Double导致GROUP_CONCAT在MySQL中具有双JOIN

pan*_*nic 2 mysql join group-concat

我有以下表格:

制品

  • 字段:id,title
  • 值:(1,'产品1')

表格1

  • 字段:id,idProduct
  • 值:(1,1),(2,1)

表2

  • 字段:id,idProduct
  • 值:(3,1),(4,1)

以下查询:

SELECT
  p.*,
  GROUP_CONCAT(t1.id ORDER BY t2.id),
  GROUP_CONCAT(t2.id ORDER BY t2.id)
FROM
  products p
JOIN table1 t1 ON p.id=t1.idProduct
JOIN table2 t2 ON p.id=t2.idProduct
GROUP BY
  p.id
Run Code Online (Sandbox Code Playgroud)

预期结果是:

1 | Product 1 | 1,2     | 3,4 
Run Code Online (Sandbox Code Playgroud)

不幸的是我得到:

1 | Product 1 | 1,1,2,2 | 3,3,4,4
Run Code Online (Sandbox Code Playgroud)

小智 7

你需要添加DISTINCT:

GROUP_CONCAT(DISTINCT t1.id ORDER BY t2.id),
Run Code Online (Sandbox Code Playgroud)