mysql - 将整个表连接为单行

标签 mysql join

假设我有两个这样的表:

--------+-------          
| 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;

但这似乎并不那么容易,而且当然行不通。

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

最佳答案

使用交叉联接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;

SQL Fiddle

关于mysql - 将整个表连接为单行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32745656/

相关文章:

mysql - 如何修复 MySQL CREATE FUNCTION 查询?

mysql - pdo 插入变量作为表(mysql)

mongodb - 为什么 MongoDB 文档建议不要使用 DBREF?

mysql - 删除左表上的重复项,同时保留右表上的重复项 SELECT JOIN

php - MySQL通过发送/接收的最后一条消息获取有序的联系人列表

MySQL 三个表的连接

python - Django-ManyToMany表提取了错误的信息

mysql - 检查sql中的值是否相等

php - MySql PDO - 使用 GROUP BY、ORDER BY 和 INNER JOIN 时如何获取 "newest rows from group"?

MySQL 排名崩溃