MySQL 将多列合并为一 'temporary' 列
MySQL Merge multiple colums into one 'temporary' column
我很好奇,是否可以将多列(用逗号或其他内容分隔)合并为一列。
例如,我有这些tables(语言):
language_id | language_iso
1 NL
2 EN
3 GT
4 EN
(域)
domain_id | domain_name
1 example
另一个 table 将语言链接到网络域
languagetodomain_id | languagetodomain_lang | languagetodomain_domain
1 1 1
2 2 1
3 4 1
4 3 1
并按此顺序检索它们(一列作为提醒)
domain_id | domain_name | TemporaryColumn
1 example {1,2,4,3}
这应该有效:
SELECT Domains.*, CONCAT('{',GROUP_CONCAT(languagetodomain_lang),'}') AS TemporaryColumn
FROM Domains
JOIN LanguageToDomain ON LanguageToDomain.languagetodomain_domain = Domains.domain_id
GROUP BY domain_id
函数 GROUP_CONCAT
将值分组,用逗号分隔。我使用普通 CONCAT
函数添加了括号。
您需要在 domain_id 上进行分组,这样它会占用您拥有的每个域的所有 languagetodomain_lang
。
我猜到了 languagetodomain 的 table 名称,因为你没有提供它。
拼写:
Group_Concat 允许您跨行合并数据。
SELECT D.Domain_Id
, D.Domain_Name
, Group_Concat(LanguageToDomain_Lang,
ORDER BY LanguageToDomain_ID DESC SEPARATOR ',') as TemporaryColumn
FROM Domains D
INNER JOIN WebDomain WD
on D.Domain_ID = WD.LanguageToDomain_ID
GROUP BY D.Domain_Id, D.Domain_Name
我很好奇,是否可以将多列(用逗号或其他内容分隔)合并为一列。
例如,我有这些tables(语言):
language_id | language_iso
1 NL
2 EN
3 GT
4 EN
(域)
domain_id | domain_name
1 example
另一个 table 将语言链接到网络域
languagetodomain_id | languagetodomain_lang | languagetodomain_domain
1 1 1
2 2 1
3 4 1
4 3 1
并按此顺序检索它们(一列作为提醒)
domain_id | domain_name | TemporaryColumn
1 example {1,2,4,3}
这应该有效:
SELECT Domains.*, CONCAT('{',GROUP_CONCAT(languagetodomain_lang),'}') AS TemporaryColumn
FROM Domains
JOIN LanguageToDomain ON LanguageToDomain.languagetodomain_domain = Domains.domain_id
GROUP BY domain_id
函数 GROUP_CONCAT
将值分组,用逗号分隔。我使用普通 CONCAT
函数添加了括号。
您需要在 domain_id 上进行分组,这样它会占用您拥有的每个域的所有 languagetodomain_lang
。
我猜到了 languagetodomain 的 table 名称,因为你没有提供它。
拼写:
Group_Concat 允许您跨行合并数据。
SELECT D.Domain_Id
, D.Domain_Name
, Group_Concat(LanguageToDomain_Lang,
ORDER BY LanguageToDomain_ID DESC SEPARATOR ',') as TemporaryColumn
FROM Domains D
INNER JOIN WebDomain WD
on D.Domain_ID = WD.LanguageToDomain_ID
GROUP BY D.Domain_Id, D.Domain_Name