Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.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
Oracle 内部连接到多列并在插入指令中使用…选择_Oracle_Inner Join_Multiple Columns - Fatal编程技术网

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条查询语句,但与
相比,性能更优?