My Sql Group Concat Returns Duplicate Rows
我有一个类似于在连接一些值时从多个表中获取数据到单行的问题,但我无法理解它,我是一个新手,是 sql 查询。我的表很少,我必须加入它们并连续获取一些连接数据。说明如下:
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Table 1 – tasks(id,title,user_id) id title user_id tree_id — —– ——- ——- 1 test task 1 20 Table 2 – task_follower(id,user_id,task_id) Table 3 – account_user(id,name,email) Table 2 – category(id,category) Table 2 – task_category(id,user_id,task_id) |
我运行的查询是:
1
|
SELECT a.*, GROUP_CONCAT(b.name SEPARATOR ‘,’) AS member_names, GROUP_CONCAT(b.email SEPARATOR ‘,’) AS member_emails, GROUP_CONCAT(DISTINCT d.category) SEPARATOR ‘,’) AS categories FROM tasks AS a INNER JOIN task_followers AS c ON a.id = c.task_id INNER JOIN account_user AS b ON c.user_id = b.id INNER JOIN task_category AS i ON a.id = i.task_id INNER JOIN category AS d ON i.category_id = d.id WHERE a.id = 1 AND a.user_id = 1 AND GROUP BY a.id
|
作为这个查询的结果,我得到:
1
2 3 |
id title user_id tree_id member_names member_emails
–— —– ——- ——- ————- ————- 1 test task 1 20 rakesh,rakesh kumar3180@gmail.com,kumar3180@gmail.com |
我无法理解为什么姓名和电子邮件重复?请帮我解决这个问题,如果你能解释一下我在概念上哪里出错了?
我注意到当与任务关联的类别数量超过一个时,就会出现此问题。请看一下http://sqlfiddle.com/#!2/b96eb/1
我在那里创建了一个示例来演示我的问题。
您可以像这样在
1
|
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/271061.html