SQL 选择并插入(如果不存在)
Posted
技术标签:
【中文标题】SQL 选择并插入(如果不存在)【英文标题】:SQL select and insert if not exists 【发布时间】:2015-02-19 14:45:24 【问题描述】:我想做一个可以插入 table1 的 sql 查询。此表使用 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,然后将 key 插入 table1。
有人知道怎么做吗?
【问题讨论】:
为便于阅读而编辑 【参考方案1】:我建议你使用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
值的行。在这种情况下,这不会插入任何内容。
【讨论】:
将INSERT
更改为INSERT IGNORE
以避免“重复键错误”。以上是关于SQL 选择并插入(如果不存在)的主要内容,如果未能解决你的问题,请参考以下文章