2013-10-18 29 views
1

如果我有一個表是這樣的:的Oracle SQL帶回結果不

VALUE OWNER 
-------------- 
test1 owner1 
test2 owner1 
test3 owner1 
test4 owner1 
test5 owner1 
test1 owner2 
test3 owner2 
test5 owner2 

我怎麼帶回只是owner1

test2 
test4 

以下基本上,我希望所有的結果,其中owner1但不是owner2。

預先感謝

KS

+0

你嘗試過什麼嗎? –

+2

閱讀'minus','(不)in'和'(not)exists'。 –

回答

4
select * from tablename where OWNER = 'owner1' and `value` NOT IN (
select value from tablename where OWNER = 'owner2') 
2

例如:

WITH my_data AS 
    (SELECT 'test1' AS value, 'owner1' AS owner FROM dual 
    UNION ALL SELECT 'test2' AS value, 'owner1' AS owner FROM dual 
    UNION ALL SELECT 'test3' AS value, 'owner1' AS owner FROM dual 
    UNION ALL SELECT 'test4' AS value, 'owner1' AS owner FROM dual 
    UNION ALL SELECT 'test5' AS value, 'owner1' AS owner FROM dual 
    UNION ALL SELECT 'test1' AS value, 'owner2' AS owner FROM dual 
    UNION ALL SELECT 'test3' AS value, 'owner2' AS owner FROM dual 
    UNION ALL SELECT 'test5' AS value, 'owner2' AS owner FROM dual) 
SELECT 
    value 
    FROM my_data 
WHERE owner = 'owner1' 
MINUS 
SELECT 
    value 
    FROM my_data 
WHERE owner = 'owner2' 
; 
0
從噸

選擇值,其中所有者= 'owner1' 減號 從噸選擇值,其中所有者=' owner2'