Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql oracle子查询:无法解决错误_Sql_Oracle_Oracle11g_Subquery - Fatal编程技术网

Sql oracle子查询:无法解决错误

Sql oracle子查询:无法解决错误,sql,oracle,oracle11g,subquery,Sql,Oracle,Oracle11g,Subquery,我有两张桌子: 一个是ATM,另一个是主机(结构相同) ATM中存在主机中不存在的数据。我想同步这些表,也就是说,必须返回主机丢失的和ATM中存在的任何数据 我的解决方案: SELECT HOST.TRANS_ID WHERE NOT EXISTS (SELECT * FROM ATM WHERE ATM.TRANS_ID = HOST.TRANS_ID) 但我还是犯了一个错误 首先,为了解决您遇到的错误,您的SQL无效。要执行您试图编写的查询,您需要在外部查询中使用FROM子句,该子

我有两张桌子:

一个是ATM,另一个是主机(结构相同) ATM中存在主机中不存在的数据。我想同步这些表,也就是说,必须返回主机丢失的和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);
但是,根据您的定义,您的查询将不会返回所需的数据(“主机缺少数据”),如果数据不存在于
主机中,您如何选择它

我倾向于使用以下查询来解决您的问题:

SELECT trans_id
  FROM atm
  LEFT OUTER JOIN host
 USING trans_id
  WHERE host.rowid IS NULL;
在这个查询中,我们执行一个外部连接,返回来自
ATM
的所有行(因为它包含
主机中不存在的行)。主机中不存在的行将返回空的rowid,因此通过选择所有
TRANS\u ID
值(其中
HOST
rowid为空),将向您显示没有相应
HOST
值的
ATM
值,我相信这是您想要的


HTH

您遇到了什么错误?