1

我正在寻找一个 SQL 语句,它根据表输出缺少的日历周。这是一个简短的例子。我们正在使用 MySQL。我删除了所有不相关的列。

+------+--------------+
| Year | CalendarWeek |
+------+--------------+
| 2012 |            1 |
| 2012 |            5 |
| 2012 |            8 |
| 2012 |            9 |
| 2012 |           51 |
| 2013 |            2 |
+------+--------------+

我想得到什么:

+------+--------------+
| Year | CalendarWeek |
+------+--------------+
| 2012 |            2 |
| 2012 |            3 |
| 2012 |            4 |
| 2012 |            6 |
| 2012 |            7 |
| 2012 |           10 |
|  ... |          ... |
| 2012 |           50 |
| 2012 |           52 |
| 2013 |            1 |
+------+--------------+

我添加了点以缩短输出。

进一步背景:每行中的列是通过 Java 中的一些逻辑计算的。如果我们创建一个新行,比如说当前日历周,我们必须检查是否需要填补空白。它是一个简单的例程。前一周有排吗?是的?很好,我们完成了。否则计算前一周的值,插入它并检查前一周的值。整个程序中唯一的一个 do-while 循环。

如果我们从一个有多个间隙的表开始,这显然会失败。在这种情况下,我们必须遍历每年的所有日历周并检查缺失的行。需要一些时间。

tl; dr我正在尝试使用快捷方式减少到数据库的往返次数。

4

0 回答 0