【发布时间】:2020-09-15 21:48:36
【问题描述】:
我查看了这个论坛,但找不到正确的答案。我正在寻找在一个列中查找重复值并在另一列中标记它们的最佳方法。
因此,如果有两个相同的订单 ID(它们包含不同的后缀:E - 电力和 G - 燃气),那么我需要标记“双燃料”。但是,如果订单 ID 只出现一次,那么我需要标记“Single”。
我有这些数据示例:
我尝试从订单 ID 中删除后缀 E 和 G 以获得正确的重复值,然后使用此方法:
SELECT *
FROM
(SELECT Order_ID,
left(Order_ID, length(Order_ID)-1) AS EX
FROM my_table
ORDER BY left(Order_ID, length(Order_ID)-1) DESC) d1
LEFT JOIN
(SELECT Order_ID,
left(Order_ID, length(Order_ID)-1) AS EXS,
COUNT(left(Order_ID, length(Order_ID)-1)) AS external_count
FROM my_table
GROUP BY left(Order_ID, length(Order_ID)-1)
HAVING COUNT(left(Order_ID, length(Order_ID)-1)) > 1) d2 ON d2.Order_ID= d1.Order_ID
多亏了这一点,我才能在下一列中获得订单 ID 和出现次数。 IF > 1 然后是 Dual Fuel,IF 小于 Single。
但这似乎不起作用而且很混乱,有没有最简单的方法来实现这样的事情?
谢谢, 帕维尔
【问题讨论】:
-
我有这些数据示例: 提供格式为 CREATE TABLE + INSERT INTO 文本脚本的示例数据,而不是图片。
-
第二个源列中的值是否严格匹配第一列中的后缀?第一列的值是否严格为 9 个字符?
标签: mysql