【问题标题】:Insert query depend on another table插入查询依赖于另一个表
【发布时间】:2016-05-31 10:23:18
【问题描述】:

以下是 MySQL 表。我需要将表 A 的 ID 列中的值插入表 B 的 ID_A 列。 ID_A 中已经存在的值应该被忽略。因此,在下面提到的示例中,表 A 中的 ID 1 到 3 应该被忽略,ID 4 到 10 应该插入到表 B 中。ID_X 的值是常数,即 3。

什么是单个插入 SQL 查询?

【问题讨论】:

    标签: mysql join sql-insert mysql-select-db


    【解决方案1】:

    一个简单的选择是将AB 左连接,并仅插入A 中尚未出现在B 中的那些记录。

    INSERT INTO B (ID_A, ID_X)
    SELECT A.ID, 3
    FROM A LEFT JOIN B
       ON A.ID = B.ID_A
    WHERE B.ID_A IS NULL
    

    【讨论】:

      【解决方案2】:

      您可以在ID_A 列上创建unique index,然后运行查询:

      INSERT IGNORE INTO table_b
          SELECT      ID,
                      3
              FROM    table_a;
      

      这应该会添加缺失的行。

      【讨论】:

        【解决方案3】:
        INSERT INTO TABLEB
        (ID_A,ID_X)
        SELECT
             ID,
             3
        FROM TABLEA
        WHERE ID NOT IN (SELECT ID_A FROM TABLEB)
        

        【讨论】:

        • 虽然此代码可能会回答问题,但提供有关 why 和/或 如何 回答问题的额外上下文将显着改善其长期价值。请edit你的答案添加一些解释。
        【解决方案4】:

        试试这个;)

        insert into tableb (id_a, id_x)
        select a.id as id_a, 3 as id_x from tablea a join tableb b on b.id_a <> a.id
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-11-05
          • 2021-09-17
          • 2020-05-19
          • 2016-08-25
          • 1970-01-01
          • 2015-04-09
          • 1970-01-01
          • 2019-06-18
          相关资源
          最近更新 更多