我有两张 table
Table1:temptable3
id |Chromosome | Start | End | Reference | Alternative | QUAL | MQ
........................................................................
NULL chr1 12334 12335 A TT 10 20
NULL chr1 12334 12335 C TT 5 3
NULL chr2 123 123 A T 1 2
NULL chr2 34 34 A T 11 60
NULL chr3 12 12 A T 6 NULL
Table2:TableVariants2
id | Chromosome | Start | End | Reference | Alternative
.............................................................
1 chr1 12334 12335 A TT
2 chr1 12334 12335 C TT
3 chr2 123 123 A T
4 chr2 34 34 A T
5 chr3 12 12 A T
我想根据相等的染色体、开始、结束、引用和替代来合并它们并获得:
id |Chromosome | Start | End | Reference | Alternative | QUAL | MQ
........................................................................
1 chr1 12334 12335 A TT 10 20
2 chr1 12334 12335 C TT 5 3
3 chr2 123 123 A T 1 2
4 chr2 34 34 A T 11 60
5 chr3 12 12 A T 6 NULL
我尝试了以下方法,但这是一个永无止境的查询...
UPDATE temptable3
INNER JOIN TableVariants2
ON temptable3.Chromosome = TableVariants2.Chromosome
AND temptable3.Start = TableVariants2.Start
AND temptable3.End = TableVariants2.End
AND temptable3.Reference = TableVariants2.Reference
AND temptable3.Alternative = TableVariants2.Alternative
SET temptable3.id = TableVariants2.id;
最佳答案
您需要将两个表的所有列连接起来,这些列作为组合形成一个唯一的ID,这些列必须在连接中使用并选择预期的列,希望这会有所帮助。
SELECT B.id, A.Chromosome,A.Start,A.End,A.Reference,A.Alternative,A.QUAL,A.MQ
FROM temptable3 A
INNER JOIN TableVariants2 B
ON A.CHROMOSOME=B.CHROMOSOME AND A.START=B.STAR AND A.END=B.END
AND A.REFERENCE=B.REFERENCE AND A.ALTERNATE=B.ALTERNATE
关于MYSQL:根据多个条件合并具有不同列数且不共享ID的两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54904068/