MYSQL:根据多个条件合并具有不同列数且不共享ID的两个表

标签 mysql sql

我有两张 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/

相关文章:

MySQL 错误代码 1241

php - 无法通过插入查询来使用 php 插入 id

sql - 在 postgres json 字段中查询 json 键

sql - 在android中查询数据库

c# - 无法将参数值从 String 转换为 Int32

sql - PostgreSQL:获取 jsonb 数组中对象的值以进行全文搜索

mysql - 如何为使用子查询的 MySQL 编写 AREL UpdateManager 查询

php - MySQL Text 数据类型的作用类似于 Int 数据类型

mysql - 如何让用户上传文件并在页面加载时检索?

Mysql:从转储表中标记插入的行