我在SQL Server上有以下sql
declare @groupName varchar(50)
select @groupName=groupIdentifier from tab1 where col3 ='ABC'
if @groupName is not NULL
select @groupName
return
select @groupName=col2 from tab2 where col1= 'BCD'
if @groupName is not NULL
select @groupName
return
我翻译成RedShift如下:
create temp table t1
(groupName)
---- Statement 1 -----
insert into t1 select groupIdentifier from tab1 where col3 ='ABC'
---- Statement 2 -----
insert into t1 select col2 from tab2 where col1= 'BCD' and (select count(1) from t1)=0
select * from t1
由于RedShift中没有return语句,因此即使在语句1能够获取行的情况下,语句2也总是被执行。由于第二条语句的成本很高,因此如果语句1成功,我如何有效地阻止其执行。
答案 0 :(得分:0)
您不能仅在Redshift上仅使用SQL语句来重新创建此逻辑。 Redshift SQL语法不包含流控制命令,例如IF
和RETURN
。
通常,您将需要某种外部程序或脚本来管理流控制逻辑,以计算出要执行的SQL语句和返回的结果。