如何解决在表中插入一行的副本并检查重复项
我希望复制数据库中的 4 个现有行,并且需要更改新行中其中一列的值。我需要这样做,并确保没有创建重复项。到目前为止我所拥有的是
INSERT INTO table (col1,col2,col3)
SELECT 141,col3,FROM table
WHERE col1 = 99 AND NOT EXISTS
(SELECT * FROM table WHERE col1 = 141,col3)
但是,当我尝试运行此程序时,我的 (SELECT * FROM table WHERE col1 = 141,col3) 行中的逗号处出现语法错误。
有人可以帮忙吗?
编辑:我的数据库中有 4 行具有以下值
col1 | 第 2 列 | col 3 |
---|---|---|
99 | 1 | 启用 |
99 | 3 | A |
99 | 4 | B |
99 | 5 | C |
我想创建以下行,但首先检查重复项
col1 | 第 2 列 | col 3 |
---|---|---|
141 | 1 | 启用 |
141 | 3 | A |
141 | 4 | B |
141 | 5 | C |
解决方法
我认为您应该在选择中使用 EXCEPT 关键字(如果使用 Oracle,则使用 MINUS):
INSERT INTO table (col1,col2,col3)
SELECT 141,col3,FROM table
WHERE col1 = 99
EXCEPT
SELECT 141,FROM table
WHERE col1 = 141;
,
只需删除 col2 和 col3 即可解决问题。
INSERT INTO table (col1,col3)
SELECT 141,col3
FROM table_name t1
WHERE col1 = 99 AND NOT EXISTS
(SELECT * FROM table_name t2 WHERE t2.col1 = 141 and t1.col2=t2.col2 and t1.col3=t2.col3)
,
我现在用以下方法解决了这个问题:
INSERT INTO table (col1,FROM table t
WHERE col1 = 99 AND NOT EXISTS
(SELECT * FROM table nt
WHERE nt.col1 = 141 AND nt.col2 = t.col2 AND nt.col3 = t.col3)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。