假设我有2个这样的表:
--------+-------
| id | name |
--------+-------
| 1 | Paul |
| 2 | Jack |
| 3 | Joe |
--------+-------
--------+--------
| id | Color |
--------+--------
| 1 | Blue |
| 2 | Red |
| 3 | Pink |
--------+--------
我想得到这样的结果:
--------+-----------------
| Paul | Blue,Red,Pink |
--------+-----------------
我不知道它是否依赖于我可能错过的复杂查询或“简单”关键字。我在JOIN附近搜索了这样的事情:
SELECT * FROM main WHERE name = Paul CROSS JOIN colors WHERE 1;
但这似乎并不容易,而且它当然不起作用。
我们非常感谢您搜索的任何提示或关键字
答案 0 :(得分:0)
我认为GROUP_CONCAT()
功能是您正在寻找的功能。尝试这样的事情:
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
答案 1 :(得分:0)
使用Cross Join
和group_concat
。
<强>查询强>
select t1.name,group_concat(distinct t2.color separator ',') as color
from tbl1 t1,tbl2 t2
where t1.name = 'Paul'
group by t1.name;