数据库现在有一堆数据,先读出来放到list里面。其中里面有两个字段 一个上传日期 一个最后修改日期  如果上传日期一样测比较最后修改日期,将最后修改日期较旧的从list里面删除。  你有什么最优化的方案吗?优化

解决方案 »

  1.   

    select filename, max(FILELASTMODTIME),filedate from YYY.XXX group by filename,fileDate;刚才同事给我说了个sql语句
      

  2.   

    lz的意思是:先查询数据放到list中,  将每条数据的上传日期 与 最后修改日期  比较, 将最后修改日期较旧的从list里面删除? 对不?
    数据库中用删除吗?
      

  3.   

    这种需求一般用SQL完成,请问LZ用的什么数据库?
      

  4.   

    说说表结构和数据库,一条sql搞定。
      

  5.   

    select * from tab a where a.FILELASTMODTIME = (select max(b.FILELASTMODTIME) from table b where a.fileDate = b.fileDate group by fileDate);
    不知道这个行不行?
      

  6.   

    DB2使用RANK() OVER()函数. 使用方法和oracel的ROW_NUMBER() OVER()一样.
    假设现在有订单表ORDERS,字段:id, item_id, item_name, price, create_date, update_date
    其中id是自增长的主键, item_id是商品id, 那么我们可以使用如下语句
    SELECT
        ITEM_ID
        ,ITEM_NAME
        ,PRICE
        ,CREATE_DATE
        ,UPDATE_DATE
        ,RANK() OVER(PARTITION BY ITEM_ID ORDER BY CREATE_DATE, UPDATE_DATE DESC) AS ROWS_NUM
    FROM ORDERS
    WHERE ROWS_NUM = 1
    这样抽出来的数据是每一组商品最近的订单