0

次の問題があります。次のような 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)を実行すると。...だから、ここからどうすればいいのかわからない..

4

1 に答える 1

0

クエリ構文が間違っていると思います。

更新コマンド構文は update <table> set x=(select query),... where ...

t3 CROSS JOIN (t1, t2)さらに、このプロセスで T3 に参加し、join コマンドで作成された一時テーブル ( ) を更新しようとしているようです。

クロス結合の構文も確認してください。

于 2011-09-21T08:02:59.523 に答える