如何为 Amazon redshift 数据库编写查询,使相关查询的 where 子句具有两个条件?

Posted

技术标签:

【中文标题】如何为 Amazon redshift 数据库编写查询,使相关查询的 where 子句具有两个条件?【英文标题】:How can you write a query for Amazon redshift database such that the where clause of the correlated query has two conditions? 【发布时间】:2016-07-06 16:59:40 【问题描述】:

例子-

SELECT date, name, 
       (SELECT value
        FROM this_table
        WHERE col1= 'test1' and col2='test'
       ) AS num_sloths_bought_before
FROM source_table;

当我在 redshift 中执行查询时,我得到了这个错误 -

[Amazon](500310) Invalid operation: This type of correlated subquery pattern is not supported yet;

【问题讨论】:

【参考方案1】:

您通常可以使用联接重写相关标量子查询,对于您的查询,它是左联接:

SELECT date, name, dt.value AS num_sloths_bought_before
FROM source_table
LEFT JOIN
 ( SELECT val, 
      value
   FROM this_table
   WHERE col2='test'
 ) this_table
ON source_table.val= this_table.val;

【讨论】:

谢谢!我试过这个并且它有效。我现在面临的问题是我的 where 子句引用了另一个表 --SELECT date, name, dt.value AS num_sloths_bought_before FROM source_table, ( SELECT value FROM this_table WHERE source_table.val= this_table.val and col2='test' ) dt; 当我在cmets中执行上述查询时,我得到错误-“[Amazon](500310) Invalid operation: FROM中的子查询可能不引用相同查询级别的其他关系;”跨度> @Tisha:所以它实际上是相关的,我编辑了我的答案,现在它是一个左连接 实际上我对此有另一个问题。它无法访问 this_table,因为我使用的相关查询类似于 - “....Select val from database.this_table x ....” 我在这里用我的原始查询发布了一个新问题更清楚 - ***.com/questions/38231015/…

以上是关于如何为 Amazon redshift 数据库编写查询,使相关查询的 where 子句具有两个条件?的主要内容,如果未能解决你的问题,请参考以下文章

如何减少在 Amazon Redshift 中将 pandas 数据帧写入表的时间

检查 Amazon Redshift 中的无效日期

Amazon Redshift - 表列声明为 varchar(max) 但强制为 varchar(255)

Amazon Redshift - 横向列别名参考

如何为 Amazon S3 存储桶配置 SSL

如何为 Amazon IAP 设置 ProGuard?