原谅可能是一个愚蠢的问题,但我不是数据库专家。
这是我的桌子:
id_data | val_no3 | id_prev | id_next
--------+---------+---------+----------
1 | | | 2
2 | 7 | |
3 | | 2 | 4
4 | 5 | |
5 | | 4 | 10
6 | | 4 | 10
7 | | 4 | 10
8 | | 4 | 10
9 | | 4 | 10
10 | 8 | 4 |
在下表中:
id_prev 是 val_no3 为空时之前的 id_data 的值
id_next 是 val_no3 为空时的 id_data 的值
现在我想要这个:
id_data | val_no3 | id_prev | id_next | val_prev | val_next
--------+---------+---------+----------+----------+----------
1 | | | 2 | | 7
2 | 7 | | | |
3 | | 2 | 4 | 7 | 5
4 | 5 | | | |
5 | | 4 | 10 | 5 | 8
6 | | 4 | 10 | 5 | 8
7 | | 4 | 10 | 5 | 8
8 | | 4 | 10 | 5 | 8
9 | | 4 | 10 | 5 | 8
10 | 8 | | | |
条件如下:
如果 val_no3 为空,则: val_prev 和 val_next 必须为空
如果 val_no3 不为空,则:
val_prev 必须等于 val_no3 的前一个值(如果前面的 val_no3 也为 null,则它应该为 null)
val_next 必须等于 val_no3 的以下值(如果下面的 val_no3 也为 null,则它应该为 null)
我想我可能不得不使用滞后和领先的东西,但我不知道该怎么做。
如果您能帮我解决这个问题,我将不胜感激,谢谢。