2011-08-16 80 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