我有以下表格
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
没有记录时,查询无法检索记录。
答案 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)