我有一个名为“ 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 |
|------|---------------|-----------|-------------|
或任何其他组合。