【发布时间】:2015-04-02 12:03:39
【问题描述】:
这可能先用代码更容易解释,所以我目前使用的是这样的:
'A' in
(
SELECT DISTINCT b.col1
FROM table b
WHERE b.ky1 = a.ky1
AND b.ky2 = a.ky2
AND b.group = a.group
AND b.rowNum < a.rowNum
)
在 where 子句中。本质上,我试图查看 A 是否是外部查询指定的行之前任何点的值。这本身就有效。问题是当我在查询中添加以下内容时:
OR
'S' in
(
SELECT DISTINCT b.col1
FROM tableb b
WHERE b.ky1 = a.ky1
AND b.ky2 = a.ky2
AND b.group = a.group
AND b.rowNum < a.rowNum
)
现在,Netezza 产生以下错误消息:
ERROR: (2) This form of correlated query is not supported - consider rewriting
我觉得解决这个问题的唯一方法是进行某种连接,但我不确定如何在不产生大量重复的情况下做到这一点。有什么建议吗?
【问题讨论】:
-
联合而不是加入? (不会导致任何重复。)
-
@jarlh:这可以防止完全重复,但不能部分匹配(在我的情况下,特定记录具有
'A'和'S'为b.col1)。 -
可能有更好的方法来编写这个查询。考虑用样本数据和期望的结果提出另一个问题——描述你真正想做的事情。如果您的查询确实很复杂,请尝试将其简化以专注于这方面。
-
@GordonLinoff:我可以这样做,但这不能回答我提出的问题。
标签: sql netezza correlated-subquery ansi-sql