我有两个名为table1和table2的表。
Table1具有name和table1_id的映射。
Table2与table2_id和table1_id进行映射。
现在我希望所有table2_ids都有table1_id1而不是table1_id2,其中table1_id1和table2_id2是值。
并使用table1_id2插入上面的table2_ids,这使得如果执行上面的查询,它将返回' 0'行数。
我有两个sql语句
select table2_id from table2 where table2.table1_id =
(select table1_id from table1 where table1.name = 'name1')
minus
select table2_id from table2 where table2.table1_id =
(select table1_id from table1 where table1.name = 'name2')
现在为所有上述table2_ids运行多个insert into语句
Insert into table2 values (table2_id,
(select table1_id from table1
where table1.name = 'name2'))
我的问题是将这个问题归结为单个sql。
示例:
表1
r1name r1id
r2name r2id
表2
l1id r1id
l1id r2id
l2id r1id
l3id r1id
如果我执行第一个sql命令,其输入名称分别为r1name和r2name,我会得到输出为" l2id,l3id"因为l1id与r1id和r2id映射,并且" l2id"," l3id"仅映射" r1id"。
执行第一个sql语句后的输出:
l2id
l3id
现在我想在table2中插入一行(l2id,r2id)和(l2id,r2id)
输出2"插入"表2中的语句执行
l1id r1id
l1id r2id
l2id r1id
l3id r1id
l2id r2id
l3id r3id.
答案 0 :(得分:0)
尝试:
INSERT INTO table2 (table2_id, table1_id)
SELECT table2_id, 'name2'
FROM table2
WHERE table2_id IN
(SELECT table2_id FROM table2 WHERE table1_id = 'name1')
AND table2_id NOT IN
(SELECT table2_id FROM table2 WHERE table1_id = 'name2');