gpt4 book ai didi

mysql选择子串并按列分组

转载 作者:行者123 更新时间:2023-11-30 23:48:53 25 4
gpt4 key购买 nike

我正在尝试将数据划分到我的 MySQL 数据库中的一个表中。

列包含这样的数据:

de:"Sweatjacke*";en:"jacket*";pl:"bluza*";
de:"*";en:"*";pl:"bluza*";
fr:"*";de:"*";en:"*";pl:"dres junior*";cz:"*";
pl:"bluza";

我试图将所有翻译分成不同的栏。已经提供了通过使用以下方法执行此操作的解决方案:

SELECT 
SUBSTRING_INDEX(SUBSTRING_INDEX(name, ';', 1), ';', -1) as tr1,
SUBSTRING_INDEX(SUBSTRING_INDEX(name, ';', 2), ';', -1) as tr2,
SUBSTRING_INDEX(SUBSTRING_INDEX(name, ';', 3), ';', -1) as tr3,
SUBSTRING_INDEX(SUBSTRING_INDEX(name, ';', 4), ';', -1) as tr4,
SUBSTRING_INDEX(SUBSTRING_INDEX(name, ';', 5), ';', -1) as tr5
FROM product;

声明,但结果是:

tr1     tr2     tr3     tr4     tr5
fr:"*" de:"*" en:"*" pl:"bluza*" cz:"*"
fr:"*" de:"Sweatjacke*" en:"jacket*" pl:"bluza*" cz:"*"
de:"Sweatjacke*" en:"jacket*" pl:"bluza*"

而且我希望根据翻译类型 (pl/de/en) 对结果进行分组,因此在每个列中都存在一种类型的翻译。例如在 column1 = pl:, column2 = en: 等等

谁遇到过类似的问题,知道解决方法吗?

最佳答案

您需要对数据进行逆透视,然后选择每个值的第一部分和第二部分,然后重新聚合。

然而,更好的数据形式确实是具有语言/翻译。以下产生这个:

select substring_index(tr, ':', 1) as l, substring_index(tr, ':', 2) as t, name
from (select SUBSTRING_INDEX(SUBSTRING_INDEX(name, ';', n.n), ';', -1) as tr, n, name
from product p cross join
(select 1 as n union all select 2 union all select 3 union all select 4 union all
select 5
) n
) n

您可能需要“id”列或“word”列来标识每一行,而不是 name 列。

您现在可以调整此结果以获得您想要的结果:

select max(case when l = 'en' then name end) as en,
max(case when l = 'fr' then name end) as fr,
max(case when l = 'de' then name end) as de,
max(case when l = 'pl' then name end) as pl,
max(case when l = 'cz' then name end) as cz
from (select substring_index(tr, ':', 1) as l, substring_index(tr, ':', 2) as t, name
from (select SUBSTRING_INDEX(SUBSTRING_INDEX(name, ';', n.n), ';', -1) as tr, n, name
from product p cross join
(select 1 as n union all select 2 union all select 3 union all select 4 union all
select 5
) n
) n
) lt
group by name;

关于mysql选择子串并按列分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21205059/

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