SQL select 如果不存在则插入
SQL select and insert if not exists
我想创建一个 sql 可以插入到 table1 中的查询。此 table 使用 table2_id 外键引用 table2。
我的 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。
有人知道怎么做吗?
我建议您使用 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
值的行。在这种情况下,这不会插入任何内容。
我想创建一个 sql 可以插入到 table1 中的查询。此 table 使用 table2_id 外键引用 table2。
我的 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。
有人知道怎么做吗?
我建议您使用 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
值的行。在这种情况下,这不会插入任何内容。