Mysql 在联接中联接多行
表1:Mysql 在联接中联接多行,mysql,sql,Mysql,Sql,表1: +---------+----------+ | USER_ID| name | +---------+----------+ | 2 | Rick | +---------+----------+ 表二 +---------+----------+----------+ | t2_ID | sport | USER_ID | +---------+----------+----------+ | 32 | football |
+---------+----------+
| USER_ID| name |
+---------+----------+
| 2 | Rick |
+---------+----------+
表二
+---------+----------+----------+
| t2_ID | sport | USER_ID |
+---------+----------+----------+
| 32 | football | 2 |
+---------+----------+----------+
| 33 | baseball | 2 |
+---------+----------+----------+
我希望的结果是:
+---------+----------+--------------------+
| 2 | Rick | Football, Baseball |
+---------+----------+--------------------+
我不明白如何像这样将一个内部联接中的多行组合成一列
SELECT Table_One.* FROM Table_One LEFT JOIN Table_Two ON Table_Two.USER_ID = Table_One.USER_ID
我得到的结果为单独的行:
+---------+----------+----------+
| 2 | Rick | football |
+---------+----------+----------+
| 2 | Rick | baseball |
+---------+----------+----------+
感谢阅读本文的所有人。在进行任何评论/编辑之前,这将根据标签回答问题 您可以使用
FOR XML PATH()
子句:
SELECT to.*,
STUFF( (SELECT DISTINCT ', ' +tt.sport
FROM Table_Two tt
WHERE tt.USER_ID = to.USER_ID
FOR XML PATH('')
), 1, 1, ''
) AS Sports
FROM Table_One to;
您使用的是哪个版本的SQL Server?这违反了结构化数据表的原则,如果必须这样做,您可以使用
string\u agg()
:使用SequalPro@user8834780这就是为什么我要这个版本,它只在2017+good point上提供,如果是2017年之前-请参阅@Yogesh Sharma的回答belowI错了,它是MySQL 5.6.27,这是否仍然有效?I',在“XML”附近出现错误_PATH@RON2015.…然后在MySQL中查看@GROUP_CONCAT()
。谢谢你的帮助,我想我已经得到了!