CROSS JOIN和UPDATE THIRD TABLE不起作用

时间:2011-09-21 07:45:02

标签: mysql cross-join

我有以下问题。我们有两个看起来像这样的表:

[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)和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;

如果我执行INSERT INTO t3(或INNER JOIN)而不替换CROSS JOIN。 ......所以我不知道该怎么办......

1 个答案:

答案 0 :(得分:0)

我相信你的查询语法错误。

更新命令语法是 update <table> set x=(select query),... where ...

此处更多看起来您正在加入T3并尝试更新在join命令中创建的临时表(t3 CROSS JOIN (t1, t2))。

请检查交叉连接的语法。