作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试编写一个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, '.', ' '), '-', ' '));
关于mysql - 如何将数据库中相同的 ALIKE 条目视为 Group By 中的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55759636/
我是一名优秀的程序员,十分优秀!