2 u011475211 u011475211 于 2016.01.27 21:49 提问

Sql批量插入 防止重复

我现在有A,B,C三个表,
现有语句,insert into C(logid, msgid) select logid ,msgid from A, B
其中logid是A表中的主键,msgid是B表中的主键,把查询的结构插入C表,C表有3列,
第三列取默认,
C表中logid和msgid是联合主键,
批量插入时如何防止插入重复数据

3个回答

enpterexpress
enpterexpress   Rxr 2016.01.27 22:07
已采纳

图片说明
设置主键

caozhy
caozhy   Ds   Rxr 2016.01.27 22:00

给不允许重复的字段加上唯一约束,主键不用加。那么你插入如果重复就报错,不会让你插的。

u011475211
u011475211 我要求C表中logid和msgid这两项不能同时相同,但由于是批量插入,所以无法进行if not exist判断,如何解决
2 年多之前 回复
wwwsssaaaddd
wwwsssaaaddd   2016.02.01 21:44

简单的做法是加上distinct:

 insert into C(logid, msgid) select distinct logid ,msgid from A, B
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
MySQL批量插入遇上唯一索引避免方法(避免导入重复数据)
MySQL批量插入遇上唯一索引避免方法(避免导入重复数据)未避免导入重复数据,建议建立唯一索引 防止批量插入时,遇上唯一索引,可以使用以下3种方法避免方法 (一)导入差异数据,忽略重复数据,IGNORE INTO的使用 (二)导入并覆盖重复数据,REPLACE INTO 的使用 (三)导入保留重复数据未指定字段,INSERT INTO ON DUPLICATE KEY UPDATE 的使用 *表
Mybatis不重复批量写及相关问题
MyBatis批量入库及排重,及其并发的问题。
批量插入数据重复插入
通过前面的完成了批量的插入但是会有重复性的数据的插入,怎么样保证插入的数据不重复,这是需要考虑的,写记下!
sql插入数据时,避免插入重复数据
1.往表T_Mid_WaterIndexArea中插入数据    insert into [dbo].[T_Mid_WaterIndexArea](AreaCode,Year,DO,CODMn,BOD5,COD,NH3N,TP,TN,CompositeIndex) select c.AreaCode,c.Year, --c.AreaName, AVG(c.DO) DO,AVG(c.CODM
SqlBulkCopy批量插入DB,异常处理,某行出错,保证正确行可插入DB
App.config:         program.cs using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.SqlClient; using System.Configuration;
批量插入记录,遇到重复记录则为自动更新
在插入大量数据时可能同时遇到两个问题: 如果每条更新执行一次sql性能很低,也容易造成阻塞; 批量插入时又有可能遇到主键 或者 唯一索引重复的问题,导致整个批量插入失败 使用 ON DUPLICATE KEY UPDATE 一条sql解决批量插入和主键或者唯一索引重复问题 举例如下: 表结构如下: create table mytable(
oracle 批量插入时,如何去除重复数据
用储存过程批量抽取一个视图的数据,插入到一个新建的表,视图数据有2.4亿,昨天抽取到6千万就卡住了,不知道什么原因,想继续执行这个存储过程,想请问加什么条件来避免插入那些已经插入过的数据 视图上有唯一性字段  XH 储存过程如下 create or replace procedure up_table as type a is table of new_table%rowt
使用SQLiteStatement向SQLite数据库批量插入时数据重复问题
今天使用SQLiteStatement从txt文本向SQLite数据库中批量导入数据,是一行一行的导入,每一行对应于表中一个记录。导入成功后发现部分数据重复,琢磨了很久发现了问题所在:原来是在重复使用SQLiteStatement的bindXXX方法时忘记clearBindings(),导致上次bindXXX时的部分数据残留下来,当执行插入操作时把残留的部分数据重复插入到表中了。
大规模插入操作防止表锁方法讨论
今天同事们在讨论大规模插入操作时锁表导致操作超时的问题,因为最近他们有个需求要求时时都可能有插入多条纪录,同时又有程序会更新这些纪录(有多个程序会去改记录操作,也有多个程序会去插入记录),而且时时性要很高。本来考虑缓冲插入也就是先将数据仍到池子里等集满或到时间后才处理插入,以减少插入动作,也有考虑将隔离等级强行下降至行,但是这些方法都有局限性,最现时的就是DBA为他们一个程序进行单独设置。而且需求
Hibernate 批量插入数据,跳过重复数据
前两天接到学校的一个项目,做学校的一个校工会信息管理系统,遇到一个需求:在网页管理界面上操作,从Excel读取N条数据,插入到数据库中. 想用三大框架来做这个系统,但是遇到一个问题,Transaction遇到异常会回滚,并中断插入操作,后续的数据将无法插入到数据库,一时间没找到合适的方法来解决,.于是乎只好用原生SQL语句来操作. 解决方法: 先用JXL读取Excel,然后利用事务+crea