我有一个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]}]
取消嵌套已返回该行两次,本来是一行,这是因为此数组中有2个对象。 我想添加到sql查询的下一部分是
select hashtag['text'] as htag
到现有选择中,该选择应仍返回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)
我想是因为我在这个数组中有另一个数组。
预先感谢
答案 0 :(得分:0)
我不确定您要在哪里添加hashtag['text']
表达式,因此无法确定您的问题是什么,但是我有两个建议供您尝试:
hashtag
的类型为row(text varchar, …)
,这表明hashtag.text
应该有效。element_at
,例如element_at(hashtag, 'text')
。答案 1 :(得分:0)
我也遇到了这个问题,因为没有提供解决方案,所以我想加入: 取消嵌套数组后,您可以使用 .引用而不是 ['']:
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)