【问题标题】:MySQL Merging two tables with precedenceMySQL优先合并两个表
【发布时间】:2015-11-08 01:54:46
【问题描述】:

在 MySQL 数据库中,我有 2 个包含以下示例数据的表。表键是 variable_id。

table_1

**variable_id** **release_id** 3 10 5 10

table_2

**variable_id** **release_id** 1 01 2 15 3 15 4 20 5 25

我希望能够合并两个表,table_1 中的行优先于 table_2 中的行。

结果集应该是:

**variable_id** **release_id** 1 01 2 15 3 10 4 20 5 10

请帮助我使用 MySQL SQL 来完成此操作。我试着做一个左右连接的联合,但没有用。

【问题讨论】:

    标签: mysql sql select join


    【解决方案1】:

    您可以从table_1 中取出行,然后从union all 取出table_2 中的额外行。笨重,但应该可以完成工作:

    SELECT *
    FROM   table_1
    UNION ALL
    SELECT *
    FROM   table_2
    WHERE  variable_id NOT IN (SELECT variable_id FROM table_1)
    

    【讨论】:

    • 只要 table_1 中的 variable_id 永远不会为空
    • @Drew OP 声明“表键是 variable_id”。我假设这意味着一个主键,根据定义,它不能是null
    • 只为下一个出现的人:>
    【解决方案2】:
    SELECT table_2.variable_id, 
           IFNULL(table_1.release_id, table_2.release_id) release_id
    FROM table_2 
    LEFT JOIN table_1 
    ON table_2.variable_id = table_1.variable_id
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-11
      • 1970-01-01
      • 2020-04-07
      • 2022-11-15
      • 2017-10-24
      • 2015-01-31
      相关资源
      最近更新 更多