提问人:Marcio Buss 提问时间:9/3/2023 更新时间:9/3/2023 访问量:55
SQL 错误 -- 如何在 Redshift 中使用“(field IN (SELECT col from Table) OR (field IS NULL))”
SQL error -- how to use "(field IN (SELECT col from Table) OR (field IS NULL))" in Redshift
问:
我在 Redshift 中收到一个错误,逻辑上规定它不应该发生。代码非常简单:
SELECT field1, field2
FROM table T
WHERE condition1
AND condition2
AND (T.field3 IN (SELECT col FROM T2) OR T.field3 IS NULL)
这会产生一个错误,其上下文读取 context:query->a_last_plan()->m_locus == LocusXNode。
但是,如果我稍微调整上面的代码并使用:
SELECT field1, field2
FROM table T
WHERE condition1
AND condition2
AND (T.field3 IN ('a', 'b', 'c') OR T.field3 IS NULL)
然后事情就开始了。我不能诉诸这种诡计,因为我需要比较 T.field3 的值不是固定的,它们确实是行可能会更改的表的一部分。
我已经检查了数据类型和
(SELECT col FROM T2)
具有与 T.field3 数据类型完全相同的“col”。
现在,我正在求助于一个不优雅的解决方案,即将一个假的“null”值(“unik_null_value”)添加到 T2 中,然后使用合并:
(coalesce(T.field3,'unik_null_value') IN (SELECT col FROM T2))
然而,这是一个相当大的黑客,并在 T2 中增加了一个不需要的值。 非常感谢任何支持,谢谢。
答: 暂无答案
评论
WHERE condition1 AND condition2 AND T.field3 IS NULL