仅从表中选择,第二个表上没有记录

时间:2014-10-10 20:14:03

标签: sql sql-server

我有以下表格

TABLE1 (ID_OWNER,NAME)

1,JOHN
1,ELVIS
1,MICHAEL
1,KELVIN

TABLE2 (ID_OWNER,NAME)

1,KELVIN

我的条件是:

如果表2

中有来自同一所有者的记录,则只返回表1 中的记录

但如果TABLE_2中有记录,则必须仅检索TABLE_2中的记录

我试过

SELECT  
    COALESCE(TB1.NAME,TB2.NAME)
FROM 
    TABLE_2 TB2
LEFT JOIN 
    TABLE_1 TB1 ON TB1.OWNER_ID = TB2.OWNER_ID 
                AND NOT EXISTS (SELECT 1 
                                FROM TABLE_2 TB2_SUB 
                                WHERE TB2_SUB.OWNER_ID = TB1.OWNER_ID)
WHERE 
    TB2.OWNER_ID = 1

但是当TABLE_2没有记录时,查询无法检索记录。

2 个答案:

答案 0 :(得分:2)

您的代码过于复杂:

SELECT *
FROM Table1 T1
WHERE NOT EXISTS(SELECT 1 FROM Table2
                 WHERE ID_OWNER = T1.ID_OWNER)

答案 1 :(得分:1)

您可以使用in运算符:

SELECT *
FROM   table1
WHERE  id_owner NOT IN (SELECT id_owner FROM table2)