次の問題があります。次のような 2 つのテーブルがあります。
[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 の CROSS JOIN を実行し、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;
CROSS JOINを置き換えないINSERT INTO t3(またはINNER JOIN)を実行すると。...だから、ここからどうすればいいのかわからない..