如何在雪花中编写相关子查询
Posted
技术标签:
【中文标题】如何在雪花中编写相关子查询【英文标题】:how to write a correlated subquery in snowflake 【发布时间】:2019-01-04 03:06:14 【问题描述】:你能帮我在雪花中写一个相关的子查询吗?
select a
b,
(select d.x from d inner join b on d.id=b.id) As x,
(select d.x from d inner join bon d.id!=b.id) AS Y
FROM a
inner join b on a.id=b.id
根据连接条件从 d 表中选择 X。根据另一个连接条件从同一个表中选择另一列 上面的查询几乎是我原来的场景。你能帮我在雪花中写一个相同的查询吗
【问题讨论】:
请提供示例数据集和您期望的查询结果。但请注意,在SELECT
列表中,您只能拥有每个返回 EXACTLY ONE ROW 的子查询。我猜你的查询不是这种情况。您还可以考虑像SELECT d.x FROM d WHERE d.id=b.id
这样的子查询,这可能会有所帮助。但我不明白这对=
和!=
是如何起作用的。
好的,谢谢@MarcinZukowski 让我试试
【参考方案1】:
关联子查询通常不是一个好主意,因为在许多情况下,它们会导致每行一个查询,而无法扩展。
如果我正确阅读了您的查询,您可以简单地使用不同的连接条件加入 d
两次以获得 x
和 y
。
select
a.*,
b.*,
d1.x as x,
d2.x as y
from
a
join
b on a.id = b.id
join
d as d1 on d.id = b.id
join
d as d2 on d.id <> b.id
【讨论】:
这应该被标记为答案。一年后,SELECT 子句不支持相关子查询 - docs.snowflake.com/en/user-guide/…以上是关于如何在雪花中编写相关子查询的主要内容,如果未能解决你的问题,请参考以下文章