首页 > 解决方案 > 使用 SQL 使用列的值选择所有可能的行集

问题描述

我想知道仅使用 SQL 是否有可能。我在这里想要实现的目标如下:

具有以下列的 SQL 表:

------------
| DURATION |
|----------|
|     5    |
|    14    |
|     3    |
|    25    |
|     .    |
|     .    |
|     .    |

我想从小于或大于给定值的每行中选择满足 DURATION 总和的所有可能的行集。例如,如果值为 20,则小于 20 的结果应包含 3 组行

14 + 5

5 + 3

14 + 3

标签: sql

解决方案


考虑在两个字段之和小于零的条件下避免反向重复的自连接。注意:这只返回两对组合。

SELECT t1.DURATION, t2.DURATION
FROM myTable t1
LEFT JOIN myTable t2
  ON t1.DURATION < t2.DURATION
WHERE t1.DURATION + t2.DURATION < 20

推荐阅读