【问题标题】:SQL Insert if NULL如果为 NULL,则 SQL 插入
【发布时间】:2011-10-28 12:10:44
【问题描述】:

有没有一种纯粹的 SQL 方法可以做到这一点?

我有一张桌子apples:id, price,还有一张apple_info:apple_id, color

对于apples 中的每一行,如果它尚不存在,我想在apple_info 中添加相应的行。找不到任何这样的例子。

【问题讨论】:

  • 在插入每个苹果时,还是在插入整个苹果表之后?如何为插入到 apple_info 中提供颜色值?
  • 事后(这将是我选择的一些设定值)

标签: mysql


【解决方案1】:

试试这个:

insert into apple_info (apple_id, color)
select a.id, 'some_color'
  from apples a
  left outer join apple_info ai
    on (a.id = ai.apple_id)
 where ai.apple_id is null;

您将在apple_info 上插入一个不存在的apple_idcolor 的固定值的行。我想这就是你想要的。

【讨论】:

【解决方案2】:

使用INSERT IGNORE:

INSERT IGNORE INTO apple_info(apple_id, color)
    SELECT id, 'green' FROM apples

【讨论】:

    猜你喜欢
    • 2018-04-13
    • 2019-01-21
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 2018-09-17
    • 2015-03-22
    • 1970-01-01
    • 2012-06-07
    相关资源
    最近更新 更多