SQL 重复数据插入

SQL 重复数据插入,第1张

使用NOT EXISTS:

INSERT INTO TABLE_2

(id, name)

SELECT t1.id,

t1.name

FROM TABLE_1 t1

WHERE NOT EXISTS(SELECT id

FROM TABLE_2 t2

WHERE t2.id = t1.id)

使用NOT IN:

INSERT INTO TABLE_2

(id, name)

SELECT t1.id,

t1.name

FROM TABLE_1 t1

WHERE t1.id NOT IN (SELECT id

FROM TABLE_2)

使用LEFT JOIN/IS NULL:

INSERT INTO TABLE_2

(id, name)

SELECT t1.id,

t1.name

FROM TABLE_1 t1

LEFT JOIN TABLE_2 t2 ON t2.id = t1.id

WHERE t2.id IS NULL

这就是自己实现一个ID自增的东西。

比如的你有个公用类专门用来生成后面的数字,所有需要用到的方法都调用这个类的一个方法我们就叫它nextId吧,只要这个方法是线程安全的就可以了。

IdUtils.nextId()

int nextId() {

lock(this){

return this.id++

}

}

应用启动的时候从数据库查询一下id的最大值并设置给工具类的id,让它接着增长就行了。

具体实现看你用什么语言。

请仔细阅读别人回答的是什么意思。想想oracle的sequence的实现,是不是类似?

在sqlite中,可以用以下方法防止插入重复数据:

设置表的联合主键

在INSERT语句中添加OR IGNORE,即可。

示例如下:

insert OR IGNORE into PDA_Test (DeviceID,MethodName) values('1112','测试原有')

sqlite避免重复插入数据

SQLite 数据库常用约束如下:

NOT NULL - 非空

UNIQUE - 唯一

PRIMARY KEY - 主键

FOREIGN KEY - 外键

CHECK - 条件检查

DEFAULT - 默认

用insert语句插入数据,为避免重复插入又不打断数据处理。

首先要避免重复插入,就必须在插入时引发冲突。在表中设置了id字段,该字段为UNIQUE属性,当插入的id已存在时引发冲突。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11625640.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存