0
我使用查询来创建表,其中一列中有一个SET。由于默认别名导致的语法错误(_c3)
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数据有它的“特殊”二字查询。我也想要一个布尔值来指示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我收到此错误信息:
编译语句时出错:FAILED:无法识别'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'是非法别名/列名称,因为下划线是它的第一个字符。使用'\'_c3 \''代替(或重命名列或甚至更好,别名表达式在第一位) –
这样做!非常感谢你。如果你把它写成答案,我会接受它。 – RebeccaK375