2
と一致しないときに挿入:私はこのクエリを持って選択
INSERT INTO tbl_1(id , name)
SELECT id, 'XXX'
FROM tbl_2 t WHERE t.name='XXX';
時にSELECT句が一致し、それが働いています。 SELECTが一致しない場合でも、 "id"フィールドに0を挿入するクエリを実行したいと思います。
と一致しないときに挿入:私はこのクエリを持って選択
INSERT INTO tbl_1(id , name)
SELECT id, 'XXX'
FROM tbl_2 t WHERE t.name='XXX';
時にSELECT句が一致し、それが働いています。 SELECTが一致しない場合でも、 "id"フィールドに0を挿入するクエリを実行したいと思います。
(したがって、それは常に、少なくとも1つの値を返します)副選択でクエリを含める:
INSERT INTO tbl_1(id , name)
SELECT COALESCE((SELECT id FROM tbl_2 t WHERE t.name='XXX'), 0), 'XXX';
または
INSERT INTO tbl_1(id , name)
SELECT COALESCE((SELECT id FROM tbl_2 t WHERE t.name=v.name), 0), v.name
FROM (VALUES ('XXX')) v(name);
あなたはその多くの利点を持っているUNION
を使用することができます
INSERT INTO tbl_1 (id , name)
SELECT id, 'XXX'
FROM tbl_2 t
WHERE t.name='XXX'
union all
select 0, 'XXX'
where not exists (select 1 from tbl_2 t where t.name = 'XXX');
「ベース」の選択によって返された行は、1つに限定されません。 :) – KiMaN