A B 两个表结构完全相同 都是 id (自增) name , amountinsert into b (customername,amount) select customername,amount from a where a.amount<500000现在在上面那条语句的前提下,将以上的insert 语句进行改造成可以重复执行的语句,重复执行后不会产生重复数据???下面是A表中的数据这是一道面试题,请大神指教!!!
2 回答
有只小跳蛙
TA贡献1824条经验 获得超8个赞
纯粹就事论事的解决方法就是楼上这样的,不考虑任何性能或者其他问题。
笔试的时候这样就行了。
面试的话,你可以多讲讲,比如可以这样解决,但是,这样解决会有什么问题,巴拉巴拉巴啦啦,
顺便就可以提到,使用自增ID的弊病所在,
就是这儿出现的,因为你不能Insert 原始的ID进入新表,所以要么在新表种增加一个字段用于记录老ID,
要么就得用这种又蠢又慢的判断语句来避免重复数据了。
HUX布斯
TA贡献1876条经验 获得超6个赞
insert into b (customername,amount)
select customername,amount
from a
where a.amount<500000
and not exists(select 1 from b where b.customername = a.customername and b.amount = a.amount)
- 2 回答
- 0 关注
- 1022 浏览
添加回答
举报
0/150
提交
取消