Sql 错误:无法为给定查询设计查询计划

Sql 错误:无法为给定查询设计查询计划,sql,amazon-redshift,Sql,Amazon Redshift,此查询有什么问题?我正在尝试运行红移,但我发现错误无法为给定查询设计查询计划 这两个表都有文件名,我想知道它们共享哪些文件,哪些没有(在这种情况下,我需要知道哪一个有文件)。 如果它们共享,则文件名将显示在两列上;如果它们不共享,则文件名将仅显示在包含该文件的表的列上,而另一列将为null/空。有些行具有相同的文件名,因此我使用distinct。我使用子字符串忽略扩展名 select distinct a.filename as arquivo_a , r.filename as arquivo

此查询有什么问题?我正在尝试运行红移,但我发现错误
无法为给定查询设计查询计划

这两个表都有文件名,我想知道它们共享哪些文件,哪些没有(在这种情况下,我需要知道哪一个有文件)。 如果它们共享,则文件名将显示在两列上;如果它们不共享,则文件名将仅显示在包含该文件的表的列上,而另一列将为null/空。有些行具有相同的文件名,因此我使用distinct。我使用子字符串忽略扩展名

select distinct a.filename as arquivo_a , r.filename as arquivo_r 
from table1 a
FULL JOIN table2 r ON  SUBSTRING(a.filename,1,LEN(a.filename) - 4) = SUBSTRING(r.filename,1,LEN(r.filename) - 4)

出现此错误是因为无法在左侧联接字段中使用公式,因此应至少使用以下内容:

select *
from table1 a
FULL JOIN table2 r 
   ON a.filename_without_ext = SUBSTRING(r.filename,1,LEN(r.filename) - 4)
这本可以奏效的


文件名不唯一这一事实与此无关

如果进行内部联接,是否会出现相同的错误?两个表都返回了所有记录吗?我使用内部连接时没有得到相同的错误,我使用完全连接是因为我想要两个表中的所有记录,即使是它们不共享的记录,同时知道其中一个记录的原因。这可能有多个原因。由于我不知道您的表是如何设计的以及它们各自的数据类型,我建议您仔细检查以下线程:(I)和(ii)无需担心,我只是发现了它的文件名,因为文件名不是唯一的,所以我需要a.id=r.id
上的
,而不是使用文件名。