zoukankan      html  css  js  c++  java
  • 关于“怎么比较两个SQL查询语句产生的结果集是否相同”搜集到的一些资料

    一、

    如果你这两个结果集都没有close,可以这样: 

    rs.last(); 
    rs2.last(); 
    if (rs.getRow() != rs2.getRow()) { 
    //记录数不等,即结果不等 

    rs.first(); 
    rs2.first(); 
    while (rs.next() && rs2.next()) { 
    if (Math.abs(rs.getFloat(2) - rs2.getFloat(2)) > 0.00000001) { 
    //记录值不等 
    break; 

    }

    二、

    来自百度知道的网友回答

    //结果集有5列(根据情况调整):empno, ename, sal, hiredate, deptno
    public static String []columns = {"empno", "ename", "sal", "hiredate", "deptno"};

    //结果集rs1和rs2, 判断rs1与rs2中是否有相同元素
    public static boolean hasSame(ResultSet rs1, ResultSet rs2) throws SQLException{
    List<Map<String, Object>> list1 = new ArrayList<Map<String, Object>>();
    List<Map<String, Object>> list2 = new ArrayList<Map<String, Object>>();
    int i;
    while(rs1.next()){
    Map<String, Object> map = new HashMap<String, Object>();
    for(i = 0; i < columns.length; i++){
    map.put(columns[i], rs1.getObject(columns[i]));
    }
    list1.add(map);
    }

    while(rs2.next()){
    Map<String, Object> map = new HashMap<String, Object>();
    for(i = 0; i < columns.length; i++){
    map.put(columns[i], rs2.getObject(columns[i]));
    }
    list2.add(map);
    }

    for(Map<String, Object> map: list1){
    if(list2.contains(map)){
    return true;
    }
    }

    return false;
    }
    三、参考http://blog.csdn.net/terryhuang/article/details/8621021 重点摘录如下:

    oracle 解决方案
    1. (select * from a1  
    2.  minus   
    3. select * from a2   
    4. )  
    5.  union all  
    6.  (select * from a2  
    7.  minus   
    8. select * from a1   
    9. )  

    照这展开优化下

    (A minus B)union (B minus A)    如果得到的结果是空,证明一致。

    另外参考一下http://www.itpub.net/thread-1066538-1-1.html

    四、

    select Cause, Rate
    from (
    select Cause, Rate from A1
    union all
    select Cause, Rate from A2)
    group by Cause, Rate 
    having count(*) < 2

    如果结果集为NULL,就可以判断该结果集是一致的。。。

  • 相关阅读:
    web前端工程师
    java工程师
    原因原来默认预检测会检测是否存在多选框
    软件测试&安全测试高峰论坛
    安卓学习图
    为什么mongo中不能用int作为key
    历经小半宿吧。哎,终于搭建好了Linux-C的环境
    把昨晚写的东西完善了一下,还行,真差不多
    半宿了,仿写了个CList模板类,留着以后用吧
    今天复习了一下完成端口网络模型
  • 原文地址:https://www.cnblogs.com/qingxinblog/p/4237394.html
Copyright © 2011-2022 走看看