Oracle 内部连接到多列并在插入指令中使用…选择
表Oracle 内部连接到多列并在插入指令中使用…选择,oracle,inner-join,multiple-columns,Oracle,Inner Join,Multiple Columns,表CUST\u DAY0\u MERGE包含以下列 NEW_CUST_ID ACTIVE_REF_ID OLD_REF_ID_1 OLD_REF_ID_2 OLD_REF_ID_3 我想在表CUST\u REVIEWS中创建一个insert语句,包含以下列: CUST_REVIEW_ID RUN_DATE CUST_ID CUST_SOURCE_UNIQUE_ID CUST_SOURCE_REF_ID 此insert语句需要在以下条件下使用CUST\u DAY0\u MERGE内部联接查询:
CUST\u DAY0\u MERGE
包含以下列
NEW_CUST_ID
ACTIVE_REF_ID
OLD_REF_ID_1
OLD_REF_ID_2
OLD_REF_ID_3
我想在表CUST\u REVIEWS
中创建一个insert语句,包含以下列:
CUST_REVIEW_ID
RUN_DATE
CUST_ID
CUST_SOURCE_UNIQUE_ID
CUST_SOURCE_REF_ID
此insert语句需要在以下条件下使用CUST\u DAY0\u MERGE
内部联接查询:
CUST_DAY0_MERGE.OLD_REF_ID_1`=`CUST_REVIEWS.CUST_SOURCE_REF_ID
CUST_DAY0_MERGE.OLD_REF_ID_2`=`CUST_REVIEWS.CUST_SOURCE_REF_ID
CUST_DAY0_MERGE.OLD_REF_ID_3`=`CUST_REVIEWS.CUST_SOURCE_REF_ID
CUST_REVIEWS.CUST_ID`=`CUST_DAY0_MERGE.NEW_CUST_ID
CUST_REVIEWS.CUST_SOURCE_UNIQUE_ID`=`CUST_DAY0_MERGE.NEW_CUST_ID
如果满足上述条件,将在
客户审核
中插入一条新记录,条件如下:
CUST_DAY0_MERGE.OLD_REF_ID_1`=`CUST_REVIEWS.CUST_SOURCE_REF_ID
CUST_DAY0_MERGE.OLD_REF_ID_2`=`CUST_REVIEWS.CUST_SOURCE_REF_ID
CUST_DAY0_MERGE.OLD_REF_ID_3`=`CUST_REVIEWS.CUST_SOURCE_REF_ID
CUST_REVIEWS.CUST_ID`=`CUST_DAY0_MERGE.NEW_CUST_ID
CUST_REVIEWS.CUST_SOURCE_UNIQUE_ID`=`CUST_DAY0_MERGE.NEW_CUST_ID
对于其他列,应根据现有值保持不变
我有一份示例声明,如下所示:
INSERT INTO CUST_REVIEWS(CUST_REVIEW_ID,RUN_DATE,CUST_ID,CUST_SOURCE_UNIQUE_ID,CUST_SOURCE_REF_ID)
SELECT CUST_REVIEW_ID,RUN_DATE,CUST_ID,CUST_SOURCE_UNIQUE_ID,CUST_SOURCE_REF_ID
FROM CUST_REVIEWS reviews
INNER JOIN CUST_DAY0_MERGE merge1
ON (reviews.CUST_SOURCE_REF_ID = merge1.OLD_REF_ID_1)
INNER JOIN CUST_DAY0_MERGE merge2
ON (reviews.CUST_SOURCE_REF_ID = merge2.OLD_REF_ID_2)
INNER JOIN CUST_DAY0_MERGE merge3
ON (reviews.CUST_SOURCE_REF_ID = merge3.OLD_REF_ID_3);
如何通过更改CUST\u ID
和CUST\u SOURCE\u UNIQUE\u ID
以达到我想要达到的条件来增强insert语句?“如果满足上述条件,将向CUST\u REVIEWS插入一条新记录”-您的意思是
“如果至少有上述一项”
或“如果上述所有情况都发生了” 在第二种情况下,可以使用单个联接:
INNER JOIN CUST_DAY0_MERGE merge
ON (reviews.CUST_SOURCE_REF_ID = merge.OLD_REF_ID_1)
AND
(reviews.CUST_SOURCE_REF_ID = merge.OLD_REF_ID_2)
AND
(reviews.CUST_SOURCE_REF_ID = merge.OLD_REF_ID_3)
在第一种情况下,您可以使用“或”,但使用“联合”会被认为更为理想:
INNER JOIN CUST_DAY0_MERGE merge
ON (reviews.CUST_SOURCE_REF_ID = merge.OLD_REF_ID_1)
OR
(reviews.CUST_SOURCE_REF_ID = merge.OLD_REF_ID_2)
OR
(reviews.CUST_SOURCE_REF_ID = merge.OLD_REF_ID_3)
vs
至少有一个以上的fullfilledI我了解使用单连接的部分。将insert语句中的
CUST\u ID
和CUST\u SOURCE\u UNIQUE\u ID
更改为CUST\u DAY0\u MERGE。新的客户ID
?select语句是否正确?应该是这样吗?:选择CUST\u REVIEW\u ID,RUN\u DATE,MERGE.NEW\u CUST\u ID,MERGE.NEW\u CUST\u ID,CUST\u SOURCE\u REF\u ID
我用或
测试了单连接,用UNION
进行内部连接的语法如何?用UNION
替换或
时出现语法错误。我知道,它需要3条查询语句,但与或
相比,性能更优?