本帖最后由 u012067473 于 2013-10-09 18:00:41 编辑

解决方案 »

  1.   

    查询后面添加一个order by decode(id,9,1,8,2,5,3,1,4,6,5,3,6)如果是传值的 可以考虑在程序里面先拼接出这个order by 比较简单
      

  2.   


    再问个问题,在数据库中用order by decode 的效率快些,还是在服务层用for循环匹配效率快些呢?
      

  3.   


    这样也可以 方法肯定有很多 直接拼接order by decode(id,9,1,8,2,5,3,1,4,6,5,3,6) 
    第一个是id 后面2、4、6..位是要查询的 3、5、7..位 是要转换的数字
    string sql = "order by decode(id";
    for(int i = 0 ;...)
    {
       sql += +","+"数据集序列"+","+i.Tostring();
    }
    sql += ")";
    然后把这段 放在你的sql语句后面就行了
      

  4.   


    一般来说 少量数据 效率差不多 如果是传值很多参数 本身就要in这么多 然后排序 效率肯定会降很多 LZ可以测试一下 查询一个页面 用2种方式做 哪一个反应会快点
      

  5.   

    楼主直接 order by instr('9,8,5,1,6,3',id) 这样就和你传入的顺序一致了
      

  6.   

    楼主直接 order by instr('9,8,5,1,6,3',id) 这样就和你传入的顺序一致了3Q 受教了