如何识别同一行中3个不同列中的重复数据并删除第二组重复数据?

时间:2012-09-26 20:42:45

标签: mysql regex database

我的数据集看起来像这样:

ID | ItemName  | Category1 | Category2 | Category3
1  |  HALv1    | Computer  | Computer  | AI
2  |  HALv2    | Computer  | AI        | AI
3  |  HALv3    | AI        | AI        | AI

理想情况下,我需要它看起来像这样:

ID | ItemName  | Category1 | Category2 | Category3
1  |  HALv1    | Computer  | AI        | 
2  |  HALv2    | Computer  | AI        | 
3  |  HALv3    | AI        |           | 

更具体地说,我需要一些东西(SQL或正则表达式)来评估一行数据中的3列(如上例中的Category1,2,3)并返回在指定的3中没有重复值的行列。

数据当前位于.csv文件中,但如果需要,可以轻松放入mySQL数据库。

如果解决方案是基于SQL的,可用的工具是用于执行正则表达式的TextPad或带有PHPMyAdmin 3.3.9的MySQL 5.5.8。提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

这将清除像#1这样的行:

UPDATE my_table
SET category2 = category3,
    category3 = NULL
WHERE category1 = category2

第2行:

UPDATE my_table
SET category3 = NULL
where category2 = category3;

和第3行:

UPDATE my_table
SET category3 = NULL,
    category2 = NULL
WHERE category1 = category2
AND category2 = category3;

首先处理更新category3的所有案例,然后处理category2。