Mysql 将两个联接表和一个数据表返回到一个字符串中,该字符串以逗号分隔,并用GROUP CONCAT分隔
从这些表格中:Mysql 将两个联接表和一个数据表返回到一个字符串中,该字符串以逗号分隔,并用GROUP CONCAT分隔,mysql,sql,Mysql,Sql,从这些表格中: table_a id | date | owner | space 1 | 85408503 | 4 | 5 2 | 52345234 | 5 | 5 3 | 52345243 | 2 | 5 table_b id | name | age 2 | luis | 32 4 | german | 53 5 | marta | 43 table_c id |
table_a
id | date | owner | space
1 | 85408503 | 4 | 5
2 | 52345234 | 5 | 5
3 | 52345243 | 2 | 5
table_b
id | name | age
2 | luis | 32
4 | german | 53
5 | marta | 43
table_c
id | c_id | stack | vs
1 | 3 | 1 | 2
2 | 3 | 4 | 2
3 | 1 | 1 | 2
4 | 3 | 4 | 3
我想通过t1.id与table_b.name连接,选择table_a.space(例如table_a.space=5)组中具有特定数字的每个字段,其中owner=table_b.id和一个新列,该列包含由逗号分隔的符合项:table_a.id=table_c.c_id还包括table_c.version=2
所以。。我的尝试(我尝试了很多事情,使用分组、使用等,但没有成功
那么,什么工作没有错误
SELECT t1.id,t1.owner,t3.vs
FROM table_a t1 LEFT JOIN table_b t2 ON t1.owner = t2.id
LEFT JOIN table_c t3 ON t1.id = t3.c_id
WHERE t1.space = 5 GROUP BY t1.id ORDER BY t1.id
我知道这将被放入一个字符串(如果我把它放在“t1.owner”之后,它将只返回一行
GROUP_CONCAT(DISTINCT t3.stack SEPARATOR ',') as selected
我不知道t3.vs的巧合应该放在哪里
AND t3.vs = 2
我希望在t1.space=5时返回此值
id | owner| space | vs | selected
2 | 5 | 5 | 2 |
3 | 2 | 5 | 2 | 1,4
当t1.space=3时
这应该会回来
id | owner| space | vs |selected
3 | 2 | 5 | 2
您在问题的中间更改了命名约定。
SELECT t1.id,t1.owner, GROUP_CONCAT(DISTINCT t3.stack SEPARATOR ',') as selected
FROM table_a t1 LEFT JOIN table_b t2 ON t1.owner = t2.id
LEFT JOIN table_c t3 ON t1.id = t3.c_id
WHERE t1.space = 5 AND t3.vs=2
GROUP BY t1.id
ORDER BY t1.id
不使用GROUP,将所有的东西分组为1行。GROUPBY告诉MySQL将其按特定列分组。
< P>您在问题的中间更改了命名约定。SELECT t1.id,t1.owner, GROUP_CONCAT(DISTINCT t3.stack SEPARATOR ',') as selected
FROM table_a t1 LEFT JOIN table_b t2 ON t1.owner = t2.id
LEFT JOIN table_c t3 ON t1.id = t3.c_id
WHERE t1.space = 5 AND t3.vs=2
GROUP BY t1.id
ORDER BY t1.id
如果没有GROUP BY,您将所有内容都分组到一行中。GROUP BY告诉mysql按特定列进行分组。您的问题令人困惑,因为您从表a、表b、表c切换到了t1、t2 t3,并且您似乎不确定要如何对它们进行分组。您的问题令人困惑,因为您从表a、表b、表b切换到了表ble_c到t1,t2和t3,您似乎不确定要如何将它们分组。谢谢您的帮助。我只是做了一些修改,这就是我需要的(不需要WHERE子句中的t3.vs=2。我以前尝试过,但使用了错误的分组,然后我检查了手册,意识到我做错了什么。感谢帮助。我只做了一些修改,这就是我需要的(WHERE子句中不需要t3.vs=2。我以前尝试过,但使用了错误的分组,然后我检查了手册,意识到我做错了什么