我想定期从表A往表B中插入数据,插入数据时根据表B中的主键字段判断该部分数据是否已经存在,在插入时只插不存在的数据。
现在需要参考的两种方式:
(1)、INSERT INTO B (字段列表) SELECT 字段列表 FROM A WHERE 主键组合 NOT IN (SELECT 主键组合 FROM B);
这种方式效率很低下,速度非常慢。
(2)、INSERT INTO B (字段列表) SELECT 字段列表 FROM A MINUS SELECT 字段列表 FROM B;
速度比较快,但是如果主键一样而后边字段不一样的时候就不正确了。对于这个问题,大家有什么比较好的办法?
现在需要参考的两种方式:
(1)、INSERT INTO B (字段列表) SELECT 字段列表 FROM A WHERE 主键组合 NOT IN (SELECT 主键组合 FROM B);
这种方式效率很低下,速度非常慢。
(2)、INSERT INTO B (字段列表) SELECT 字段列表 FROM A MINUS SELECT 字段列表 FROM B;
速度比较快,但是如果主键一样而后边字段不一样的时候就不正确了。对于这个问题,大家有什么比较好的办法?
用exists
我现在也碰到了相同的问题:
OracleCommand cmd = new OracleCommand(
"INSERT INTO PMS_LOG (text,abstract,filelocation,time) VALUES(:text,:abstract,:filelocation,:time)",thisConnection);cmd.Parameters.Add("text", OracleType.VarChar, 1000, "text");
cmd.Parameters.Add("abstract", OracleType.VarChar, 50, "abstract");
cmd.Parameters.Add("filelocation", OracleType.VarChar, 100, "filelocation");
cmd.Parameters.Add("time", OracleType.Timestamp, 6, "time");
thisadapter.InsertCommand = cmd;
thisadapter.Update(thisDataSet, "PMS_LOG");现在可以插入数据,但是我数据库设置了text和abstract作为主键。现在该如何在插入语句中使用not exists?
拜托了!