如果为 NULL,则 SQL 插入

Posted

技术标签:

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

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

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

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

【问题讨论】:

在插入每个苹果时,还是在插入整个苹果表之后?如何为插入到 apple_info 中提供颜色值? 事后(这将是我选择的一些设定值) 【参考方案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 的固定值的行。我想这就是你想要的。

【讨论】:

谢谢,这正是我的想法。 LEFT OUTER JOIN 让我失望,但事实证明它与 mysql 中的 LEFT JOIN 相同:***.com/questions/2809594/…【参考方案2】:

使用INSERT IGNORE:

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

【讨论】:

以上是关于如果为 NULL,则 SQL 插入的主要内容,如果未能解决你的问题,请参考以下文章

SQL 存储过程查询以清除日期字段(如果为 NULL)

SQL——插入数据

如果一列为 Null,则 SQL 返回 Null(与 COALESCE() 相反)

SQL 空值

SQL 查询 - 如果存在则更新,否则插入

在PL / SQL过程调用中使用DECODE