我正在处理一个案件,这对我来说很困难。 我正在准备一个将在大型数据库上执行的脚本。
关于问题
假设我们有一个主表A
Id | Type | StartTime | EndTime
1 0 1 2 valid
2 1 2 3 valid
3 0 3 6 invalid
4 1 7 8 valid
5 0 9 10 invalid
6 0 14 20 invalid
并连接第二个表B(B [refId]-> A [id])
Id | RefId | StartTime | EndTime
1 1 1 1
2 1 2 2
3 2 2 3
4 3 3 5
5 3 5 6
6 4 6 8
7 5 9 10
8 6 14 15
9 6 15 16
10 6 17 18
11 6 18 18
12 6 19 20
现在我们有了表A中有效行的定义。 类型为“ 1”的行有效。而且,总是第一行也是有效的。 其余无效,应将其删除。
该怎么办:
预期结果
表A
Id | Type | StartTime | EndTime
1 0 1 2 valid
2 1 2 6 ( from 3) valid
4 1 7 20 (from 8) valid
表B(B [refId]-> A [id])
Id | RefId | StartTime | EndTime
1 1 1 1
2 1 2 2
3 2 2 3
4 2(from3) 3 5
5 2(from3) 5 6
6 4 6 8
7 4(from5) 9 10
8 4(from6) 14 15
9 4(from6) 15 16
10 4(from6) 17 18
11 4(from6) 18 18
12 6(from6) 19 20
当前,我的决议
但是使用这种解决方案,我在这个有效行之间只有一个无效行,而且我将所有数据从表B移到有效行(表A id 4、5、6)时遇到问题。
有没有解决这个问题的方法?