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

时间:2019-04-11 18:41:51

标签: mysql

我有一个名为“ 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。 我认为查询听起来应该像这样:SELECT 'all rows' WHERE SUM(time) < 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 | about | time | type | |------|---------------|-----------|-------------| | 2 | text | 1 | restaurant | |------|---------------|-----------|-------------| | 3 | text | 2 | museum | |------|---------------|-----------|-------------| 或任何其他组合。

0 个答案:

没有答案