gpt4 book ai didi

MYSQL Concat 多行并连接多个表

转载 作者:行者123 更新时间:2023-11-29 10:58:02 25 4
gpt4 key购买 nike

我有以下表结构:

 tMaster
City ClientId ProductId
-------------------------------------
1 1 1
1 1 N
2 1 1
2 2 3
N N N

tCity
CityId CityName
----------------------
1 City1
2 City2
N CityN

tClient
ClientId ClientName
----------------------
1 ClientName1
2 ClientName2
N ClientNameN

tProduct
ProductId ProductName
-------------------------------------
1 ProductName1
2 ProductName2
3 ProductName3
N ProductNameN

我的 SQL 是:

 SELECT idCity, 
GROUP_CONCAT(DISTINCT ClientId , "|" ,ProductId ORDER BY ClientId) AS StringResult
FROM tMaster
GROUP BY idCity
ORDER BY idCity

所以,我的结果是:

 idCity StringResult
---------------------------------------------------------
1 ClientId1|ProductId1,ClientIdN|ProductIdN
2 ClientId1|ProductId1,ClientId2|ProductId3

但是我需要从 tCity、tClient 和 tProduct 获取 CityName、ClientName 和 ProductName

 idCity City    StringResult
---------------------------------------------------------
1 City1 ClientId1|ClientName1|Product1|ProductName1,ClientN|ClientNameN|ProductIdN|ProductNameN
2 City2 ClientId1|ClientName1|ProductId1|ProductName1,ClientId2|ClientName2|ProductId3|ProductName3

有办法做到吗?

最佳答案

您没有在 SELECT 语句中包含这些列,因此您不会在输出中看到这些列。尝试这样的事情:

SELECT idCity, CityName, ClientName, ProductName
GROUP_CONCAT(
DISTINCT tMaster.ClientId , "|" , CityName, "|", ClientName, "|",
ProductId , "|", ProductName ORDER BY tMaster.ClientId) AS StringResult
FROM tMaster
INNER JOIN tCity ON tMaster.city = tCity.CityId
INNER JOIN tClient ON tMaster.ClientId = tClient.ClientId
INNER JOIN tProduct ON tMaster.ProductId = tProduct.ProductId

由于其中一些列名称不明确,您需要包含表名称,即 tMaster.ClientId。

这应该有效。我需要设置一个快速架构来验证。

关于MYSQL Concat 多行并连接多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42730306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com