Mysql 将整个表连接为一行

Mysql 将整个表连接为一行,mysql,join,Mysql,Join,假设我有两张这样的桌子: --------+------- | id | name | --------+------- | 1 | Paul | | 2 | Jack | | 3 | Joe | --------+------- --------+-------- | id | Color | --------+-------- | 1 | Blue | | 2 | Red | | 3 | Pink

假设我有两张这样的桌子:

--------+-------          
| id    | name |
--------+-------
| 1     | Paul |
| 2     | Jack |
| 3     | Joe  |
--------+-------


--------+--------
| id    | Color |
--------+--------
| 1     | Blue  |
| 2     | Red   |
| 3     | Pink  |
--------+--------
--------+-----------------
| Paul  | Blue,Red,Pink  |
--------+-----------------
SELECT * FROM main WHERE name = Paul CROSS JOIN colors WHERE 1;
SELECT table_names.name, GROUP_CONCAT(table_colors.color) AS color 
FROM table_names 
LEFT JOIN table_colors ON table_names.id = table_colors.id
我希望得到这样的结果:

--------+-------          
| id    | name |
--------+-------
| 1     | Paul |
| 2     | Jack |
| 3     | Joe  |
--------+-------


--------+--------
| id    | Color |
--------+--------
| 1     | Blue  |
| 2     | Red   |
| 3     | Pink  |
--------+--------
--------+-----------------
| Paul  | Blue,Red,Pink  |
--------+-----------------
SELECT * FROM main WHERE name = Paul CROSS JOIN colors WHERE 1;
SELECT table_names.name, GROUP_CONCAT(table_colors.color) AS color 
FROM table_names 
LEFT JOIN table_colors ON table_names.id = table_colors.id
我不知道它是依赖于一个复杂的查询还是一个我可能错过的“简单”关键字。我在连接点附近搜索过如下内容:

--------+-------          
| id    | name |
--------+-------
| 1     | Paul |
| 2     | Jack |
| 3     | Joe  |
--------+-------


--------+--------
| id    | Color |
--------+--------
| 1     | Blue  |
| 2     | Red   |
| 3     | Pink  |
--------+--------
--------+-----------------
| Paul  | Blue,Red,Pink  |
--------+-----------------
SELECT * FROM main WHERE name = Paul CROSS JOIN colors WHERE 1;
SELECT table_names.name, GROUP_CONCAT(table_colors.color) AS color 
FROM table_names 
LEFT JOIN table_colors ON table_names.id = table_colors.id
但这似乎并不容易,当然也不起作用


任何要搜索的提示或关键字都将不胜感激

我认为
GROUP\u CONCAT()
函数正是您所需要的。试着这样做:

--------+-------          
| id    | name |
--------+-------
| 1     | Paul |
| 2     | Jack |
| 3     | Joe  |
--------+-------


--------+--------
| id    | Color |
--------+--------
| 1     | Blue  |
| 2     | Red   |
| 3     | Pink  |
--------+--------
--------+-----------------
| Paul  | Blue,Red,Pink  |
--------+-----------------
SELECT * FROM main WHERE name = Paul CROSS JOIN colors WHERE 1;
SELECT table_names.name, GROUP_CONCAT(table_colors.color) AS color 
FROM table_names 
LEFT JOIN table_colors ON table_names.id = table_colors.id

使用
交叉连接
组连接

查询

select t1.name,group_concat(distinct t2.color separator ',') as color
from tbl1 t1,tbl2 t2
where t1.name = 'Paul'
group by t1.name;

谢谢,这正是我想要的,它没有像预期的那样工作,但是谢谢你提供我所缺少的团队。