我有两个表,一个定义为:
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;
在凤凰城这样的事情可能吗?
您可以按照phoenix文档中的指定执行upsert-select。
https://phoenix.apache.org/language/index.html#upsert_select
UPSERT INTO test.targetTable(col1,col2)SELECT col3,col4 FROM test.sourceTable WHERE col5 <100 UPSERT INTO foo SELECT * FROM bar;
这也可用于更新表中的多行。在这种情况下,源表和目标表将是相同的。
例如,你可以做这样的事情
UPSERT INTO FOO(RK,AGE,CITY,NAME)选择RK,AGE,CITY,REGEX_REPLACE('MATT','MATT','CARTER')来自FOO,其中名称='MATT';
这将在人名为MATT的所有行中将名称从MATT更新为CARTER。