一个查询,它返回值加起来为某个常数的记录

时间:2015-12-15 12:50:52

标签: mysql

我试图在MySQL中编写一个查询。有一个食物桌,其中有与每种食物相对应的卡路里。我想要的是一个查询,它可以返回那些卡路里加起来达到150的食品的所有可能组合。我在互联网上搜索但却找不到任何东西。我知道它与SUM()有关。

1 个答案:

答案 0 :(得分:1)

这在SQL中效率不高。并且,你不能真正做到这一点"一般来说"在SQL中。但是,您可以获得最多给定数量的组合。例如,以下内容与最多四种食物的独特组合:

select *
from foods f left join
     foods f2
     on f.foodid < f2.foodid left join
     foods f3
     on f2.foodid < f3.foodid left join
     foods f4
     on f3.foodid < f4.foodid;

然后,您可以添加where子句以将其限制为您想要的内容:

where (coalesce(f.calories, 0) + coalesce(f2.calories, 0) +
       coalesce(f.calories, 0) + coalesce(f2.calories, 0)
      ) = 150

注意:组合是不同的,只包含每种食物的一个实例。