Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL:获取最小的项目集,其中总和(值)大于给定的数字_Mysql_Select_Sum_Set - Fatal编程技术网

MySQL:获取最小的项目集,其中总和(值)大于给定的数字

MySQL:获取最小的项目集,其中总和(值)大于给定的数字,mysql,select,sum,set,Mysql,Select,Sum,Set,我遇到了一个新的/特殊的问题,我无法找到一个好的解决方案,也许有人有想法 下表: | id | value | --------------- | … | … | | 11 | 500 | | 12 | 300 | | 13 | 200 | | 14 | 400 | | 15 | 300 | --------------- | id | value | --------------- | … | … | | 11 | 450 |

我遇到了一个新的/特殊的问题,我无法找到一个好的解决方案,也许有人有想法

下表:

|  id | value | 
---------------
|   … |     … |
|  11 |   500 |
|  12 |   300 |
|  13 |   200 |
|  14 |   400 |
|  15 |   300 |
---------------
|  id | value |
---------------
|   … |     … |
|  11 |   450 |
---------------
现在我需要选择(然后删除/更新)这些条目,直到达到给定值(1250),所以在“魔术”之后,我需要如下表:

|  id | value | 
---------------
|   … |     … |
|  11 |   500 |
|  12 |   300 |
|  13 |   200 |
|  14 |   400 |
|  15 |   300 |
---------------
|  id | value |
---------------
|   … |     … |
|  11 |   450 |
---------------
是否有很好的可能性(性能问题)?(如果选择查询,那么其他两个应该更容易)

我发现了一些使用subselect(w/o limit…)和“where sum()的解决方案 为了简单起见,下面的查询假设ID是连续的,但是可以很容易地扩展到不连续的情况

SELECT a.id
     , LEAST(a.value,a.value-i) value 
  FROM my_table a 
  JOIN 
     ( SELECT *
            , @i:=@i-value i 
         FROM my_table
            , ( SELECT @i:=1250) vars 
        ORDER 
           BY id DESC
     ) b
    ON b.id = a.id + 1
   AND a.value - i >= 0;

+----+-------+
| id | value |
+----+-------+
| 10 |   700 |
| 11 |   450 |
+----+-------+