oracle的子查询:错误没有得到解决
问题描述:
我有两个表:oracle的子查询:错误没有得到解决
一个是ATM等是HOST(结构是相同的) 有一个在ATM数据,其不存在于HOST。我想同步这些表格,也就是说,不管从HOST丢失并存在于ATM中的数据,都必须返回。
我的解决办法:
SELECT HOST.TRANS_ID WHERE NOT EXISTS
(SELECT * FROM ATM WHERE ATM.TRANS_ID = HOST.TRANS_ID)
还是我得到一个错误!
答
首先,为了解决您遇到的错误,您的SQL无效。要执行你试图写你需要在你的外部查询FROM
条款查询,应改为:
SELECT HOST.TRANS_ID
FROM host
WHERE NOT EXISTS
(SELECT *
FROM ATM
WHERE ATM.TRANS_ID = HOST.TRANS_ID);
但是,您的查询将不会返回你需要由您定义的数据(“数据从主机丢失“),如果数据不存在于HOST
中,您如何选择它?
我会倾向于使用下面的查询来解决您的问题:
SELECT trans_id
FROM atm
LEFT OUTER JOIN host
USING trans_id
WHERE host.rowid IS NULL;
在此查询中,我们执行外连接从ATM
返回所有行(因为它持有HOST
不存在行)。 HOST中不存在的行将返回NULL rowid,因此通过选择所有TRANS_ID
值,其中HOST
rowid为空将显示ATM
值,该值没有对应的HOST
值,我相信这正是您想要的值。
HTH
你得到了什么错误? – Ollie