【发布时间】:2019-05-28 07:25:44
【问题描述】:
在阅读一位前员工的 AWS Redshift SQL 查询时,我发现了一些可以简化为:
delete
names
from
(
select 'Stu' AS last_name
) kill_list
where
kill_list.last_name = names.last;
当我对 Redshift 运行它时,它看起来就像我运行一样:
delete from
names
using
(
select 'Stu' AS last_name
) kill_list
where
kill_list.last_name = names.last;
但是,我找不到任何有关在您要从中删除的表名之后使用 FROM 子句的文档,所以我想知道这是否是有效的 sql 代码,或者它是否无效,但我们很幸运,Redshift 对其进行了评估我们想要的方式。
当我尝试在此处使用 Postgres v10 运行它时,出现语法错误: https://www.db-fiddle.com/f/nYQz84mgNMctMiS38zk5AZ/0
【问题讨论】:
-
我不知道 Redshift,但这在 PostgreSQL 中绝对是非法的语法。可能你把查询简化得太多了。
-
派生表(kill_list 子查询)不返回任何
ln列,因此 kill_list.ln 条件无论如何都无效。 -
@jarlh 是的,那是我的错字。已编辑帖子。
-
@Laurenz Albe,fwiw,我对 Redshift 运行了该查询,它起作用了
标签: sql postgresql amazon-web-services amazon-redshift