如何将数据库中的相同ALIKE输入项视为Group By中的一个

时间:2019-04-19 09:30:39

标签: mysql database

我试图通过一个Mysql查询将数据库中所有相同的条目分组为一个。我有一个数据库,其名称不同,数据库中的条目就像

Contract        Color

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

现在的问题是我的数据库将所有这些值都视为不同的条目,而我无法处理或强迫操作员编写确切的值,如何将所有“ 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等方式控制所有这些可能性。

1 个答案:

答案 0 :(得分:0)

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

LOWER()

Demo