gpt4 book ai didi

mysql - 当名称略有不同时按名称合并 mysql 行

转载 作者:行者123 更新时间:2023-11-29 03:32:18 26 4
gpt4 key购买 nike

我正在尝试使用以下代码合并 MySQL 中的行:

SELECT
type,
name,
GROUP_CONCAT(code SEPARATOR ',') AS code
FROM
`table1`
WHERE
name = '%name%' AND type = 'type'
GROUP BY
name

但是第一个问题是数据库条目没有发生变化。

数据库看起来像这样:

type | name  | code
-----|-------|-------
A | Milk2 | 143521
-----|-------|-------
A | Milk3 | 987564
-----|-------|-------
B | Oil | 656435
-----|-------|-------

我想让它看起来像:

type | name  | code
-----|-------|---------------
A | Milk | 143521, 987564
-----|-------|---------------
B | Oil | 656435
-----|-------|---------------

如您所见,名称可能略有不同,所以这是另一个问题。我想知道当名称的前四个字母匹配时是否有任何方法可以合并行?

提前致谢。

最佳答案

MySQL 有几个 string functions这可能有帮助。有 LEFT(name, 4),您可能还想看看 SOUNDEX(name),它实现了 Soundex algorithm散列听起来相似的单词。例如:

 select soundex('smith'), soundex('smythe')

+ --------------------- + ---------------------- +
| soundex('smith') | soundex('smythe') |
+ --------------------- + ---------------------- +
| S530 | S530 |
+ --------------------- + ---------------------- +
1 rows

或者,使用您问题中的示例:

select soundex('milk2'), soundex('milk3')

+ --------------------- + --------------------- +
| soundex('milk2') | soundex('milk3') |
+ --------------------- + --------------------- +
| M420 | M420 |
+ --------------------- + --------------------- +
1 rows

您的查询看起来像这样:

SELECT
type,
GROUP_CONCAT(DISTINCT(name) SEPARATOR ',') AS name, // note that since you've grouped on SOUNDEX(name) you can't just select name (MySQL may let you but will choose the first one
GROUP_CONCAT(code SEPARATOR ',') AS code
FROM
`table1`
WHERE
name LIKE '%name%' AND type = 'type'
GROUP BY
type, SOUNDEX(name)

希望对您有所帮助!

关于mysql - 当名称略有不同时按名称合并 mysql 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28841515/

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