我有以下问题。我们有两个看起来像这样的表:
[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*
要选择彼此重叠的段,我需要执行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。 ......所以我不知道该怎么办......
答案 0 :(得分:0)
我相信你的查询语法错误。
更新命令语法是
update <table> set x=(select query),... where ...
此处更多看起来您正在加入T3并尝试更新在join命令中创建的临时表(t3 CROSS JOIN (t1, t2)
)。
请检查交叉连接的语法。