写一段程序,实现两条记录的判断
2010-10-01 18:17
218 查看
数据库中两个表A,B (字段一致,50个左右)
想写一段程序实现:
顺序读A表,看如果A的主键没有出现在B的表中,那么insert B表
如果在B的表中且这两条记录中字段的值有不一致的,那么update B表
否则不操作,
sql好写,java里判断这个怎么实现好?!
大家办看看~ 谢谢~
把B表中的与A表主键对应的属性建hash表
像这种才3000的数据量建hash表顶好的
当找到 B 表中有 A表那条记录的时候
没必要去比较是不是有属性不一致
毕竟检查的过程就是O(N)的
直接把B表中的记录覆盖得了
个人观点 可能不好
楼上的方法就可以`查出A表B表的所有行,放入HashMap里 ,key放表的
主键,vaule放行对象。然后遍历这个HashMap,再插入B表中。小数据量可以这样。
sql好写,java里判断这个怎么实现好?!
LZ,我觉得你SQL根本就没写好,写好怎么会出现这种需求的呢,在数据库里已经能解决了,
比如你A表与B表的主键字段名为id,其余字段名分别为test1、test2……一直到test50,你不是50个左右的字段嘛
顺序读A表,看如果A的主键没有出现在B的表中,那么insert B表:
select * from A where id not in(select id from B)
取出符合要求的A表的内容,直接插呗
如果在B的表中且这两条记录中字段的值有不一致的,那么update B表:
select A.id,A.test1,A.test2 from a,b where A.id=B.id and (A.test1 <> B.test1 or A.test2 <> B.test2)
后面50个字段我就不写那么多了,意思在这呢,这时取出的就是符合你“如果在B的表中且这两条记录中字段的值有不一致的”这个要求的A表的内容,直接更新呗
把b的主键全取出来放一hashmap,然后轮循a的主键,看看此hashmap是否containsKey(a),true就update,false就insert。
不知道效率如何。
来源:英超直播
想写一段程序实现:
顺序读A表,看如果A的主键没有出现在B的表中,那么insert B表
如果在B的表中且这两条记录中字段的值有不一致的,那么update B表
否则不操作,
sql好写,java里判断这个怎么实现好?!
大家办看看~ 谢谢~
把B表中的与A表主键对应的属性建hash表
像这种才3000的数据量建hash表顶好的
当找到 B 表中有 A表那条记录的时候
没必要去比较是不是有属性不一致
毕竟检查的过程就是O(N)的
直接把B表中的记录覆盖得了
个人观点 可能不好
楼上的方法就可以`查出A表B表的所有行,放入HashMap里 ,key放表的
主键,vaule放行对象。然后遍历这个HashMap,再插入B表中。小数据量可以这样。
sql好写,java里判断这个怎么实现好?!
LZ,我觉得你SQL根本就没写好,写好怎么会出现这种需求的呢,在数据库里已经能解决了,
比如你A表与B表的主键字段名为id,其余字段名分别为test1、test2……一直到test50,你不是50个左右的字段嘛
顺序读A表,看如果A的主键没有出现在B的表中,那么insert B表:
select * from A where id not in(select id from B)
取出符合要求的A表的内容,直接插呗
如果在B的表中且这两条记录中字段的值有不一致的,那么update B表:
select A.id,A.test1,A.test2 from a,b where A.id=B.id and (A.test1 <> B.test1 or A.test2 <> B.test2)
后面50个字段我就不写那么多了,意思在这呢,这时取出的就是符合你“如果在B的表中且这两条记录中字段的值有不一致的”这个要求的A表的内容,直接更新呗
把b的主键全取出来放一hashmap,然后轮循a的主键,看看此hashmap是否containsKey(a),true就update,false就insert。
不知道效率如何。
来源:英超直播
相关文章推荐
- 写一段程序,判断一个操作系统是16位还是32位?
- 如何判断一段程序是由C 编译程序还是由C++编译程序编译的?
- CSDN博客:对于一个程序员,写程序就是实现功能,遇到具体问题,解决这个问题,并记录问题到CSDN上,从而有所提高和互相帮助。
- 通过反射来判断某个程序集中是否有实现该接口的类
- 质数判断程序实例:一种进度条实现原始方法[C源码]
- 如何判断一段程序是由C 编译程序还是由C++编译程序编译的?
- 一个用Spring AOP实现异常处理和记录程序执行时间的实例(二)
- 如何判断一段程序是由C 编译程序还是由C++编译程序编译的?
- 写一段Jdbc连Oracle的程序,并实现数据查询
- 一段程序代码 --- 实现解析字典,自动转换生成属性。
- 能否判断一个程序是否是所有实现同样目标的最快程序
- java 编写程序实现从控制台接收一个 5 位以上的整数,使用数组来判断该数字 * 是否是回文数。(例如:789987,12344321是回文数)
- 递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
- 如何判断一段程序是由C编译,还是由C++编译?
- 如何判断一段程序是由C 编译程序还是由C++编译程序编译的?
- 【小程序】汇编实现判断回文
- 【Java】实现一个根据日期判断星座程序的编写
- 易用的开源日志记录程序及其 .NET不用IIS实现预览站点工具
- 编写一个计算某个月份的天数程序,请用if-else条件语句实现。要求根据用户输入的月份,判断出月份所包含的天数。
- 写一段Jdbc连Oracle的程序,并实现数据查询.