比方说,我有2个表TABLE_A和TABLE_B。当TABLE_B中没有行时,我想在TABLE_A中插入一个空行,如果TABLE_B中有任何行,我想将任何内容插入TABLE_A中。我们该怎么做?
CREATE TABLE TABLE_A(
id STRING NOT NULL
, uid STRING NOT NULL
, date STRING NOT NULL
, timestamp TIMESTAMP NOT NULL
, payload OBJECT NOT NULL
, arr ARRAY NOT NULL
)
;
CREATE TABLE TABLE_B(
id STRING NOT NULL
, uid STRING NOT NULL
, date STRING NOT NULL
, timestamp TIMESTAMP NOT NULL
, payload OBJECT NOT NULL
, arr ARRAY NOT NULL
)
;
当TABLE_B中的COUNT(*)= 0时 插入'dummy_id','dummy_uid',current_date(),current_timestamp(),TO_OBJECT(PARSE_JSON('{}')),TO_ARRAY('DUMMY_ROWS') 进入TABLE_A。
答案 0 :(得分:2)
怎么样
INSERT INTO TABLE_A
SELECT * FROM TABLE_B
UNION ALL
SELECT
'dummy_id','dummy_uid', current_date(), current_timestamp(),
TO_OBJECT(PARSE_JSON('{}')), TO_ARRAY('DUMMY_ROWS')
WHERE (SELECT COUNT(*) FROM TABLE_B) = 0
UNION ALL的仅一部分将包含某些内容。
顺便说一句,这种解决方案通常应适用于任何DBMS,而不仅仅是Snowflake。
答案 1 :(得分:0)
您可以使用SQL的 CASE函数,可以编写类似的内容
INSERT into table_A(),
CASE
WHEN (select count(*) from table_b ) > 0
THEN select * from table_b
ELSE "some dummy data"
END
FROM table_b;
这不是复制粘贴的答案,但是您可以从中找到自己的路径