由于默认别名 (_c3) 而导致的语法错误
Syntax error due to a default alias (_c3)
我使用查询创建了一个 table,其中一列中有一个 SET。
T1:
serial _c3
1 193748 ["special","normal","normal"]
2 263565 ["normal","normal"]
然后我还有一个 Table 只有连续剧。
T2:
serial
1 193748
2 263565
3 636474
4 928396
我想要一个从 T2 生成连续剧的查询,如果它们不在 T1 中或者如果 T1 的 _c3 数据中有单词 "special"。我还想要一个布尔值来指示 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;
因此对于 select 行中的 array_contains 我收到此错误消息:
编译语句时出错:失败:无法识别 'T1' '.' 附近的输入select 表达式中的 '_c3'。
当我从 select 中删除该行并且只是 运行:
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' '.' 附近的输入select 表达式中的 '_c3'
你能给我指出正确的方向吗?谢谢!
_c3
是非法的 alias/column 名称,因为第一个字符是下划线。
如果要使用它,请用刻度线 (`) 将其包裹起来。
另一个选择是重命名为列。
最干净的解决方案是首先为表达式设置别名。
我使用查询创建了一个 table,其中一列中有一个 SET。
T1:
serial _c3
1 193748 ["special","normal","normal"]
2 263565 ["normal","normal"]
然后我还有一个 Table 只有连续剧。
T2:
serial
1 193748
2 263565
3 636474
4 928396
我想要一个从 T2 生成连续剧的查询,如果它们不在 T1 中或者如果 T1 的 _c3 数据中有单词 "special"。我还想要一个布尔值来指示 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;
因此对于 select 行中的 array_contains 我收到此错误消息:
编译语句时出错:失败:无法识别 'T1' '.' 附近的输入select 表达式中的 '_c3'。
当我从 select 中删除该行并且只是 运行:
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' '.' 附近的输入select 表达式中的 '_c3'
你能给我指出正确的方向吗?谢谢!
_c3
是非法的 alias/column 名称,因为第一个字符是下划线。
如果要使用它,请用刻度线 (`) 将其包裹起来。
另一个选择是重命名为列。
最干净的解决方案是首先为表达式设置别名。