我有两个表,一个定义为:
CREATE TABLE DESTINATION_TABLE (
EFFECTIVE_DATE DATE NOT NULL,
UID UNSIGNED_LONG NOT NULL,
SOURCES VARCHAR[],
CONSTRAINT PK_DT PRIMARY KEY (EFFECTIVE_DATE,UID)
);
我想从另一个表中插入这个(伪代码):
UPSERT INTO DESTINATION_TABLE
SELECT
EFFECTIVE_DATE,
NEXT VALUE FOR CIBC_COPY.AUM_AGGREGATES_SEQ AS "UID",
(SELECT DISTINCT ACCOUNT_ID) AS SOURCES
FROM SOURCE_TABLE
GROUP BY EFFECTIVE_DATE;
凤凰有可能这样吗?
答案 0 :(得分:0)
您可以按照phoenix文档中的说明进行upsert选择。
https://phoenix.apache.org/language/index.html#upsert_select
UPSERT INTO test.targetTable(col1,col2)从test.sourceTable选择SELECT col3,col4 WHERE col5 <100 UPSERT INTO foo SELECT * FROM栏;
这也可以用于更新表中的多行。在这种情况下,源表和目标表将相同。
例如,您可以做类似的事情
UPSERT INTO FOO(RK,AGE,CITY,NAME)从FOO WHERE NAME ='MATT'中选择RK,AGE,CITY,REGEX_REPLACE('MATT','MATT','CARTER');
这将在人员姓名为MATT的所有行中将姓名从MATT更新为CARTER。