我有以下问题。我们有两个看起来像这样的表:
[t1]
Ruler ID1 S1 E1
**1 a 1 10**
1 b 17 24
1 c 20 24
1 d 21 24
*2 e 40 47*
[t2]
Ruler ID2 S2 E2
**1 a 7 15**
**1 b 8 16**
2 c 25 35
*2 d 41 50*
[t3]
Ruler ID1 S1 E1 ID2 S2 E2
**1 a 1 10 a 7 15
1 a 1 10 b 8 16**
*2 e 40 7 d 41 50*
- 我们有大约 20 个刻度(这里我只显示刻度 1 和 2)
- S1 (S2) AND E1(E2) 分别代表刻度上的开始和结束位置
- L1(L2) 是每个段的长度。来自 t1 的段可以重叠
- 来自 t2 的段,反之亦然 多个段可以相互重叠
要选择相互重叠的段,我需要对 t1 和 t2 进行交叉连接,然后找到 t2 中的哪些段与 t1 中的段重叠,然后将它们插入到 t3 中。
如果我执行返回 0 个匹配行的表 UPDATE
UPDATE t3 CROSS JOIN (t1, t2) ON
((t2.S2 BETWEEN t1.S1 AND t1.E1) OR (t2.E2 BETWEEN t1.S1 AND t1.E1))
SET t3.CHR1 = t1.CHR1, t3.ID1 = t1.ID1, t3.S1 = t1.S1, t3.E1 = t1.E1, t3.ID2 =
t2.ID2, t3.S2 = t2.S2, t3.E2 = t2.E2
WHERE t1.CHR1 = t2.CHR2;
如果我执行 INSERT INTO t3 (或 INNER JOIN)不会替换 CROSS JOIN。...所以我不知道从这里做什么..