2014-11-21 147 views
0

我有两个名为table1和table2的表。泡吧两条SQL语句

表1与名称和table1_id进行了映射。

表2与table2_id和table1_id进行映射。

现在我想要所有的table2_ids有table1_id1但不是table1_id2其中table1_id1和table2_id2是值。

并插入上面的table2_ids与table1_id2,这使得如果你执行上面的查询它返回'0'行数。我有

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') 

两个SQL语句现在运行多重插入到报表上述所有table2_ids作为

Insert into table2 values (table2_id, 
(select table1_id from table1 
where table1.name = 'name2')) 

我的问题statment是俱乐部上面这一条SQL。

实施例:

表1

r1name r1id 
r2name r2id 

表2

l1id r1id 
l1id r2id 
l2id r1id 
l3id r1id 

如果我分别执行与名称作为r1name和r2name输入第1 SQL命令,我会得到输出为“l2id,l3id”,因为l1id与r1id和r2id都映射,“l2 ID“,”l3id“仅映射到”r1id“。第一个SQL语句的执行后

输出:

l2id 
l3id 

现在我想插入一行与(l2id,r2id)和(l2id,r2id)表2

输出后2 “插入” 语句执行在表2

l1id r1id 
l1id r2id 
l2id r1id 
l3id r1id 
l2id r2id 
l3id r3id. 
+2

你的问题不清楚,你可以请你用简单的形式和例子来解释它究竟是什么你需要..还有一个问题 - 你可以在表2中的一个table1 id有多个条目? – Murtaza 2014-11-21 06:23:09

+0

我加了个例子供你参考 – 2014-11-21 06:33:07

+0

你的问题还不清楚,“r3id”是从哪里来的?它之前没有任何表格。 – 2014-11-21 08:27:29

回答

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');