猿问

如何将以上的sql语修改后重复执行不会插入重复数据

A B 两个表结构完全相同 都是 id (自增) name , amount
insert into b (customername,amount) select customername,amount from a where a.amount<500000

现在在上面那条语句的前提下,
将以上的insert 语句进行改造成可以重复执行的语句,重复执行后不会产生重复数据???
下面是A表中的数据

这是一道面试题,请大神指教!!!

小唯快跑啊
浏览 1023回答 2
2回答

有只小跳蛙

纯粹就事论事的解决方法就是楼上这样的,不考虑任何性能或者其他问题。笔试的时候这样就行了。面试的话,你可以多讲讲,比如可以这样解决,但是,这样解决会有什么问题,巴拉巴拉巴啦啦,顺便就可以提到,使用自增ID的弊病所在,就是这儿出现的,因为你不能Insert 原始的ID进入新表,所以要么在新表种增加一个字段用于记录老ID,要么就得用这种又蠢又慢的判断语句来避免重复数据了。

HUX布斯

insert into b (customername,amount)select customername,amountfrom awhere a.amount<500000and not exists(select 1 from b where b.customername = a.customername and b.amount = a.amount)
随时随地看视频慕课网APP

相关分类

SQL Server
我要回答