【发布时间】:2017-10-29 13:44:43
【问题描述】:
我正在尝试从 ORACLE 上的两个表(示例数据)中插入 MINUS 值。我可以插入所有行,但我不能让它与另一个表中缺少的行一起工作:
样本数据:
SALES TABLE SALES2 TABLE S_DETAILS TABLE
=================== =================== ==================
ID_SALE|DATE_SALE ID_SALE|DATE_SALE ID_SALE|SALE_DETAILS
100 |12/12/2010 100 |12/12/2010 100 |SHIPPED
101 |5/10/2011 101 |5/10/2011 101 |WAITING
102 |10/9/2012 102 |SHIPPED
103 |5/10/2011 103 |PROCESSING
我的代码:
INSERT INTO SALES_RESUME(ID_SALE,DATE_SALE,TOTAL_SALE,SALE_DETAILS)
SELECT A.ID_SALE,A.DATE_SALE,B.TOTAL_SALE,B.SALE_DETAILS
FROM SALES A
JOIN S_DETAILS B ON A.ID_SALE = B.ID_SALE
WHERE A.ID_SALE IN (SELECT ID_SALE FROM SALES
MINUS
SELECT ID_SALE FROM SALES2);
当 ID_SALE 在生成的 MINUS 子查询中时,我想在 SALES_RESUME 中插入行,插入:
SALES_RESUME
==============================
ID_SALE|DATE_SALE|SALE_DETAILS
102 |10/9/2012|SHIPPED
103 |5/10/2011|PROCESSING
提前致谢
【问题讨论】:
-
您的查询似乎符合您的要求。有什么问题?
-
a看到sales_resume的日期为
10/9/1012,是不是弄错了? -
好吧,要么您在 Oracle 中发现了一个可怕但非常明显的错误(可能,但不太可能),或者这里的某些东西与您预期的不一样。让我们一步一步来。首先,如果执行
SELECT ID_SALE FROM SALES MINUS SELECT ID_SALE FROM SALES2,返回多少行?第二,如果执行SELECT A.ID_SALE, A.DATE_SALE, B.TOTAL_SALE, B.SALE_DETAILS FROM SALES A JOIN S_DETAILS B ON A.ID_SALE = B.ID_SALE,返回多少行?
标签: sql oracle insert subquery