我正在寻找一个 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我正在尝试使用快捷方式减少到数据库的往返次数。