表中有个字段叫价格,我要从表中检索出N条数据,条件是这N条数据价格之和最大而且小于我输入的一个价格,大家帮忙看看如何实现,谢谢。

解决方案 »

  1.   

    select top n price from table where price<?
      

  2.   


    select sum(价格) from 
    (
    select top N 价格 from 表名
    where 价格<输入价格
    order by 价格 desc
    )as t
      

  3.   

    使用存储过程来处理。
    1、将原来表里所有小于输入价格的记录检索出来,建立临时表 #temp 
    2、使用算法来完成查找。
    3、删除 #temp,返回结果。
    该算法分为两层:
    外层负责每次从集合中抛出一个数,控制集合中元素的总数量;
    内层负责尝试抛出,顺序为由大到小。
    一旦碰到集合中元素总数的大小小于输入价格的大小时就结束算法。这个问题用SQL命令或者存储过程解决起来有点麻烦,建议将#temp表LOAD到本地,然后通过前台的算法实现。
      

  4.   

    一个SQl语句没戏。你可能得用一个搜索算法了。更简单的,按照价格排序,然后本地做背包问题的求解就行了。
    参考:背包问题算法的JAVA实现老紫竹CSDN论坛插件发布-竹签V1.0