2013-05-01 97 views
0

我有2個表。我需要選擇從表中的一個一些IDS和基於一個條件,並插入到表2再次第二列必須來自表A,但根據不同的條件在一個SQL查詢上有2個不同的條件

表A

NC 1 
NC 2 
SC 3 
SC 4 

表B

1 100 
    1 200 
    2 100 
    2 200 

我想插入行表B所以它看起來像這樣....

1 100 
1 200 
2 100 
2 200 
3 100 
3 200 
4 100 
4 200 

我根據狀態條件='SC'從表A中選取3和4,現在我想知道如何選取NC具有的100和200的值...

對不起,如果我還沒有措辭正確

+7

你的邏輯不清楚。你如何用'4'將'100'與'3'和'200'聯繫起來?如果行數多於或少於兩行,會發生什麼? – 2013-05-01 19:56:27

+0

對不起......我的問題不對。 – user1410867 2013-05-01 20:03:57

+0

我已更正我的問題 – user1410867 2013-05-01 20:09:15

回答

2
-- sample data 
create table tbla (code char(2), id int); 
insert into tbla values ('NC', 1); 
insert into tbla values ('NC', 2); 
insert into tbla values ('SC', 3); 
insert into tbla values ('SC', 4); 

create table tblb (id int, value int); 
insert into tblb values (1, 100); 
insert into tblb values (1, 200); 
insert into tblb values (2, 100); 
insert into tblb values (2, 200); 

-- your query to INSERT the new rows into tblb 
insert into tblb 
select x.id, y.value 
from 
(
    select distinct a.id 
    from tbla a 
    where a.code = 'SC' 
) x 
cross join 
(
    select distinct b.value 
    from tbla a 
    join tblb b on a.id = b.id 
    where a.code = 'NC' 
) y 
left join tblb b on b.id = x.id and b.value = y.value 
where b.id is null; 
0

您可以通過查詢像這樣做:

Select a.id, b.value 
from "Table A" a 
join "Table B" b 
on b.id=1 --This condition pick the two first rows on table B. 
where a.condtion = 'SC' 

這不是一個完美的解決方案,但它的工作。

相關問題