sql - 如何通过比较重复字符串来更新sql记录?
问题描述
我有一个下表:
id | echantillon_dta | Est_en_double
1 | Bonjour | null
2 | Bonjour | null
3 | Bonjour | null
4 | Joke | null
5 | Joke | null
6 | | null
处理后查询将显示如下:
id | echantillon_dta | Est_en_double
1 | Bonjour | 1
2 | Bonjour | 1
3 | Bonjour | 1
4 | Joke | 4
5 | Joke | 4
6 | | null
如何比较字符串与字符串?以及如何像这样更新列?
解决方案
min(id)
您可以在 Record_Details 相同时使用更新。
并且有一个错误的描述:
6 | Nope | 6 //No duplicates found, stay null
id 6 没有重复,但isDuplicate column
值是 6,不是null
吗?
所以我having count(1) > 1
习惯爱它。
CREATE TABLE Table1 ("id" int, "Record_Details" varchar2(11), "isDuplicate" varchar2(4)) ;
INSERT ALL INTO Table1 ("id", "Record_Details", "isDuplicate") VALUES (1, 'Hello World', NULL) INTO Table1 ("id", "Record_Details", "isDuplicate") VALUES (2, 'Hello World', NULL) INTO Table1 ("id", "Record_Details", "isDuplicate") VALUES (3, 'Hello World', NULL) INTO Table1 ("id", "Record_Details", "isDuplicate") VALUES (4, 'Joke', NULL) INTO Table1 ("id", "Record_Details", "isDuplicate") VALUES (5, 'Joke', NULL) INTO Table1 ("id", "Record_Details", "isDuplicate") VALUES (6, 'Nope', NULL) SELECT * FROM dual ;
update ( select T.* , (select min("id") from Table1 Tmp where Tmp."Record_Details" = T."Record_Details" group by Tmp."Record_Details" having count(1) > 1 --No duplicates found, stay null ) as "new_isDuplicate" from Table1 T ) set "isDuplicate" = "new_isDuplicate"
6 行受影响
select * from Table1
编号 | 记录_详情 | 是重复的 -: | :------------- | :---------- 1 | 你好世界 | 1 2 | 你好世界 | 1 3 | 你好世界 | 1 4 | 笑话 | 4 5 | 笑话 | 4 6 | 没有 | 空值
db<>在这里摆弄
推荐阅读
- php - OCS Inventory 不查询 BSSID 和 SSID
- serilog - Serilog - 仅保留 7 个最新文件
- c# - 用户关闭会话时如何执行代码?
- visual-studio-2019 - 在 Visual Studio 中删除代码后的空格
- python - 如何在 Tkinter 中使用 Copyleaks API?
- powershell - 以其他用户身份运行带变量的命令
- php - 使用 PHP 中另一个字段的值更新 MongoDB 字段
- wordpress - final (1).jpg 上传出错。请稍后再试。请帮我解决这个错误
- javascript - 将插入符号移动到 contenteditable 元素中新添加元素的末尾
- spring - Junit 测试用例无法自动装配/注入由 spring 框架创建的 bean,该框架通过 jetty 服务器启动