Mysql 如何选择列的总和低于特定值的多行?

Mysql 如何选择列的总和低于特定值的多行?,mysql,Mysql,我有一个名为“markers”的表,其结构如下: +------+---------------+-----------+-------------+ | id | about | time | type | |------|---------------|-----------|-------------| | 1 | text | 2 | restaurant | |------|--------

我有一个名为“markers”的表,其结构如下:

 +------+---------------+-----------+-------------+
 |  id  |      about    |    time   |     type    |
 |------|---------------|-----------|-------------|
 |   1  |      text     |     2     |  restaurant |
 |------|---------------|-----------|-------------|
 |   2  |      text     |     1     |  restaurant |
 |------|---------------|-----------|-------------|
 |   3  |      text     |     2     |    museum   |
 |------|---------------|-----------|-------------|
 |   4  |      text     |     2     |     park    |
 +------+---------------+-----------+-------------+
从这个表中,我想选择一个行的组合,使时间之和小于或等于一个特定的值。例如,我想选择行编号1、3和4,因为总时间小于或等于6。 我认为查询听起来应该是这样的:选择SUMtime<6的“所有行”,但它没有那么简单。 另一个可能出现的问题是,如果我选择和等于3,在这种情况下,我有几个组合,第1行和第2行,第2行和第3行……等等。我可以如何选择每种类型的一个值? 我希望我能让别人明白我的意思。提前谢谢

SELECT id, time, type 
FROM `markers` 
WHERE type IN (
     SELECT type FROM markers 
     WHERE (type = 'restaurant' OR type = 'museum' OR type = 'park') 
     GROUP BY type HAVING SUM(time_to_spend)< 20
     ) 
对于3个人,我希望有这样的事情: +---+--------+------+-------+ |id |关于|时间|类型| |---|--------|------|-------| |2 |文本| 1 |餐厅| |---|--------|------|-------| |3 |文本| 2 |博物馆| |---|--------|------|-------|
或者任何其他组合。

您可以发布预期的输出(比如3)吗?听起来您需要使用一些递归。这是一个背包问题的SQL解决方案,它与您的问题非常相似,您可能能够调整它。谢谢,我将尝试您建议的链接,我将返回更多信息。关于3的输出,如果我能在另一个表或其他地方看到或输出所有可能的组合,对我来说会更好。