我有一个sql查询:
SELECT id_str, entities.hashtags
FROM tweets, unnest(entities.hashtags) as t(hashtag)
WHERE cardinality(entities.hashtags)=2 and id_str='1248585590573948928'
limit 5
返回:
id_str hashtags
1248585590573948928 [{text=LUCAS, indices=[75, 81]}, {text=WayV, indices=[83, 88]}]
1248585590573948928 [{text=LUCAS, indices=[75, 81]}, {text=WayV, indices=[83, 88]}]
unnesting已经返回了两次原来是一行的行,这是因为这个数组中有两个对象。我想添加到sql查询的下一部分是
select hashtag['text'] as htag
到现有的select,该select仍应返回2行,但这次在同一列中的单独行中返回LUCAS
和WayV
,名为htag
。
但我犯了这个错误——你知道我做错了什么吗?
Your query has the following error(s):
SYNTAX_ERROR: line 1:8: '[]' cannot be applied to row(text varchar,indices array(bigint)), varchar(4)
我想这是因为我在这个数组中有另一个数组?
提前感谢
我不完全确定你在哪里添加hashtag['text']
表达式,所以我不能自信地说你的问题是什么,但我有两个建议供你尝试:
- 错误表明
hashtag
属于row(text varchar, …)
类型,这表明hashtag.text
应该工作 - 如果不起作用,您可以尝试使用
element_at
,例如element_at(hashtag, 'text')
我也遇到了这个问题,由于没有提供解决方案,我喜欢参与:在运行数组之后,可以使用来寻址结果。引用而不是":
WITH dataset AS (
SELECT ARRAY[
CAST(ROW('Bob', 38) AS ROW(name VARCHAR, age INTEGER)),
CAST(ROW('Alice', 35) AS ROW(name VARCHAR, age INTEGER)),
CAST(ROW('Jane', 27) AS ROW(name VARCHAR, age INTEGER))
] AS users
)
SELECT
user,
user.name
FROM dataset
cross join unnest (users) as t(user)