2016-12-01 28 views
0

我是SQL查詢的新手。 r1,r2是數據列表。當我有r1,r2表時,如何在Oracle中實現r1 - (r1 - r2)而不相交?

我想實現r3 = r1 - (r1 - r2)沒有相交。 和 - 設置操作。 和stuid是檢查值減去。

而我認爲以下SQL查詢是工作。

create table r3 as 
select * 
from r1; 

create table r4 as 
select * 
from r1; 

delete from r3 
where r3.stuid in 
(delete from r4 
where r4.stuid = r2.stuid) 

(我必須使用deletee查詢兩次)

是它的工作?

+0

如果它是否行得通呢?插入一些數據並運行您的查詢。然後告訴我們它是否工作。 – jarlh

+0

@jarlh這是不行的。 r3與初始r1的值相同。 –

回答

1

你似乎想要兩套之間的重疊。如何這樣做:

select r1.* 
from r1 
where exists (select 1 from r2 where r2.stuid = r1.stuid); 

如果你想要一個新表:

create table r3 as 
    select r1.* 
    from r1 
    where exists (select 1 from r2 where r2.stuid = r1.stuid); 
+0

這是非常簡單和好,但我必須使用它兩個刪除。 –

相關問題