SQL select和insert如果不存在

时间:2015-02-19 14:45:25

标签: mysql sql insert case

我想创建一个可以插入table1的SQL查询。此表引用table2和table2_id外键。

到目前为止我的sql看起来像这样:

INSERT INTO table1 (table1_id, name, date, table2_id) 
VALUES (1, "somename", "29.04.2014", (SELECT id FROM table 2 WHERE table2.name = "BOB")  )

如果找不到table2.name,我还想在table2中插入值,然后将其插入table1。

任何人都知道如何做到这一点?

1 个答案:

答案 0 :(得分:2)

我建议你使用insert . . . select而不是insert . . . values

INSERT INTO hovedenhet (organisasjonsnummer, navn, stiftelsesdato, registreringsdatoEnhetsregisteret, organisasjonsform_id) 
    SELECT 813550202, 'SAMEIET SCHWEIGAARDSGATE 21-23', '10.01.2014', '29.04.2014', id
    FROM organisasjonsformhovedenhet oh
    WHERE oh.organisasjonsform = 'BOB';

如果没有匹配项,原始查询将为最后一列插入NULL值的行。在这种情况下,这不会插入任何内容。