【问题标题】:SQL: Insert into table_b where table_a has no related row?SQL:插入到 table_b 中,其中 table_a 没有相关行?
【发布时间】:2019-04-13 14:37:01
【问题描述】:

对不起,如果这样的问题已经存在,我到目前为止还没有找到。

我有两张桌子,productsprices

在我的products 表中,我有很多产品(数千个),但在prices 中,我只为少数产品设定了价格。

连接它们的列称为code(在两个表中)。

我需要进行一个 INSERT 查询,为每个在 prices 中没有行的 product 插入一行到 prices。 如何做到这一点?

【问题讨论】:

  • codeprices 表中是否应该是唯一的?
  • @GordonLinoff 不,不是!因为一篇文章可以有多个价格。因此,同一篇文章的价格表可以有很多行。但是我需要至少为文章提供一个价格才能开始工作。
  • 有趣。也许你只是需要LEFT JOIN 某处?

标签: mysql sql insert mariadb row


【解决方案1】:

您可以将INSERT INTO ... SELECTEXISTS 子句一起使用:

INSERT INTO prices (code, col1, col2, ...)
SELECT code, col1, col2, ...
FROM products p1
WHERE NOT EXISTS (SELECT 1 FROM prices p2 WHERE p1.code = p2.code);

【讨论】:

    【解决方案2】:

    productscode 之间的 LEFT JOIN

    select p.code, p.column2, p.column3, ...
    from products p left join prices pp
    on pp.code = p.code
    where pp.code is null
    

    products中选择所有在prices中没有对应code的行。
    所以你可以在这个语句中使用它:

    insert into prices (code, column2, column3, ...)
    select p.code, p.column2, p.column3, ...
    from products p left join prices pp
    on pp.code = p.code
    where pp.code is null
    

    【讨论】:

      猜你喜欢
      • 2011-04-05
      • 1970-01-01
      • 2019-11-09
      • 2017-08-01
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多