gpt4 book ai didi

hadoop - 由于默认别名 (_c3) 而导致的语法错误

转载 作者:可可西里 更新时间:2023-11-01 16:39:14 25 4
gpt4 key购买 nike

我使用查询创建了一个表,其中一列中有一个 SET。

T1:

    serial   _c3
1 193748 ["special","normal","normal"]
2 263565 ["normal","normal"]

然后我有另一个只有连续剧的表格。

T2:

    serial   
1 193748
2 263565
3 636474
4 928396

我想要一个从 T2 生成序列的查询,如果它们不在 T1 中或者如果 T1 的 _c3 数据中有单词“special”。我还想要一个 bool 值来指示 T1 是否在 T2 中。

所以使用上面的例子,我想要:

T3:

    serial   in_t1 
1 193748 1
3 636474 0
4 928396 0

到目前为止,这是我的查询:

SELECT 
T2.serial,
array_contains(T1._c3, 'special') as in_t1
FROM T2 LEFT OUTER JOIN T1 ON T1.serial = T2.serial
WHERE T1.serial is NULL OR array_contains(T1._c3, 'special')
LIMIT 50;

因此对于选择行中的 array_contains,我收到此错误消息:

编译语句时出错:失败:无法识别“T1”附近的输入“。”选择表达式中的“_c3”。

当我从选择中删除该行并运行时:

SELECT 
T2.serial
FROM T2 LEFT OUTER JOIN T1 ON T1.serial = T2.serial
WHERE T1.serial is NULL OR array_contains(T1._c3, 'special')
LIMIT 50;

我得到了同样的错误,但现在在 WHERE 子句行中:无法识别 'T1' '.' 附近的输入选择表达式中的 '_c3'

你能给我指出正确的方向吗?谢谢!

最佳答案

_c3 是非法的别名/列名,因为它的第一个字符是下划线。
如果要使用它,请用刻度线 (`) 将其包裹起来。
另一个选择是重命名为列。
最干净的解决方案是首先为表达式设置别名。

关于hadoop - 由于默认别名 (_c3) 而导致的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45036867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com