3 个表和 2 个带有 CONCAT 表达式的独立 JOIN
Posted
技术标签:
【中文标题】3 个表和 2 个带有 CONCAT 表达式的独立 JOIN【英文标题】:3 tables and 2 independent JOINs with CONCAT expressions 【发布时间】:2015-05-19 02:37:54 【问题描述】:我有以下 3 个带有 ID 的表
表:用户
user | name
1 | Joe
2 | John
表:user_id1
user | id1
1 | 2
1 | 3
2 | 5
表:user_id2
user | id2
1 | 3
1 | 4
我想为每个用户得到以下结果
name | ids 1 | ids 2
Joe | 2,3 | 3,4
John| 5 | NULL
我使用这个查询:
SELECT
user.name,
GROUP_CONCAT(user_id1.id1) AS "ids1",
GROUP_CONCAT(user_id2.id2) AS "ids2"
FROM users
LEFT JOIN user_id1
ON user_id1.user=users.user
LEFT JOIN user_id2
ON user_id2.user=users.user
但我得到了这个结果:
name | ids1 | ids2
Joe | 2,2,3,3 | 3,4,3,4
John | 5 | NULL
怎么了? 感谢您的帮助
【问题讨论】:
【参考方案1】:使用 DISTINCT 应该可以解决它
SELECT
user.name,
GROUP_CONCAT(DISTINCT user_id1.id1) AS "ids1",
GROUP_CONCAT(DISTINCT user_id2.id2) AS "ids2"
FROM users
LEFT JOIN user_id1
ON user_id1.user=users.user
LEFT JOIN user_id2
ON user_id2.user=users.user
【讨论】:
以上是关于3 个表和 2 个带有 CONCAT 表达式的独立 JOIN的主要内容,如果未能解决你的问题,请参考以下文章
查询从 3 个表中获取数据,主表和总和列从彼此 2 个表中获取
laravel 查询 - 加入 2 个表和 groupBy 相同的 ID