gpt4 book ai didi

mysql - 如何将数据库中相同的 ALIKE 条目视为 Group By 中的条目

转载 作者:行者123 更新时间:2023-11-29 16:05:43 25 4
gpt4 key购买 nike

我正在尝试编写一个Mysql查询,将数据库中所有相同的条目分组为一个。我有一个具有不同颜色名称的数据库,数据库中的条目就像

Contract        Color

OG-46374 I.Khaki
OG-46375 I-KHAKI
OG-46376 I KHAKI
OG-46377 W Ocher
OG-46378 W.Ocher

现在的问题是我的数据库将所有这些值视为不同的条目,而我无法处理或强制运算符(operator)写入确切的值,我如何将所有“I Khaki”和 W ocher 颜色视为组中不同的颜色按条款我的 Sql 查询有点像

SELECT 
*,
ROUND(SUM(meter_yard_length), 0) AS TotaL_Length_Contract,
ROUND(SUM(IF(quality = 'A', meter_yard_length, 0)),
0) AS A_Quality_length,
ROUND(SUM(IF(quality = 'B', meter_yard_length, 0)),
0) AS B_Quality_length GROUP BY r.contract_no, r.color DESC;

请告诉通用解决方案,因为我有很多可能性,例如“I*khaki”“I--Khaki”等,我无法通过替换等控制所有这些

最佳答案

此答案基于您提供的非常有限的样本数据。我发现颜色名称有两个问题。首先,并非所有字母总是大小写相同。其次,在给定位置可能有空格、句点或破折号,而实际上这三个都代表相同的逻辑名称。我们可以尝试使用REPLACE将点和破折号转换为空格,然后使用LOWER()来处理大小写问题。

SELECT 
contract_no,
LOWER(REPLACE(REPLACE(color, '.', ' '), '-', ' '))
ROUND(SUM(meter_yard_length), 0) AS TotaL_Length_Contract,
ROUND(SUM(IF(quality = 'A', meter_yard_length, 0)),
0) AS A_Quality_length,
ROUND(SUM(IF(quality = 'B', meter_yard_length, 0)),
0) AS B_Quality_length
FROM yourTable
GROUP BY
contract_no,
LOWER(REPLACE(REPLACE(color, '.', ' '), '-', ' '));

Demo

关于mysql - 如何将数据库中相同的 ALIKE 条目视为 Group By 中的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55759636/

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