2011-08-16 64 views
3

有没有纯粹的SQL方法来做到这一点?SQL Insert if NULL

我有一个表​​:id, price,另有apple_infoapple_id, color

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

+0

为每个苹果插入,或对整个苹果表的事实之后?如何提供插入到apple_info的颜色值? – hatchet

+0

事实后(这将是我选择的一些设定值) – ash

回答

3

试试这个:

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一个固定值。我想这是你想要的。

+0

谢谢,这正是我想到的。 'LEFT OUTER JOIN'丢掉了我,但事实证明它和MySQL中的'LEFT JOIN'一样:http://stackoverflow.com/questions/2809594/basic-question-left-outer-join-vs-left-join – ash

1

使用INSERT IGNORE

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