Redshift 如果 TableA 包含数据,则 TRUNCATE TableB 并将 TableA 插入 TableB ELSE 什么都不做

Redshift If TableA contains data then TRUNCATE TableB and INSERT TableA into TableB ELSE do nothing

我正在尝试在 Redshift 中创建查询,但我正在努力创建正确的逻辑或使其达到 运行 句号。

我有 2 个表 TableATableB

如果 TableA 包含数据,则擦除 TableB 并插入 TableA 中的数据。

伪:

CASE WHEN
(SELECT COUNT(*) FROM TABLEA) > 0
     THEN TRUNCATE TABLEB AND INSERT INTO TABLEB (SELECT * FROM TABLEA)
     ELSE DO NOTHING 
END

显然这行不通,所以我需要用 IF 语句做些什么吗?:

IF EXISTS (SELECT * FROM TABLEA)
    BEGIN
        TRUNCATE TABLE TABLEB
        INSERT INTO TABLEB (SELECT * FROM TABLEA)
    END
ELSE
    BEGIN
        PRINT 'nothing in table'
    END

您需要使用存储过程。不能在普通 SQL 查询中将具有副作用的查询嵌套在其他查询中。