UNION类型text和bigint无法匹配
UNION types text and bigint cannot be matched
我是 运行 一个复杂的存储过程,当我有 3 个联合时出现错误,但有 2 个联合时没有错误。如果我删除前两个联合中的任何一个,它运行良好。如果我将其中一个 NULL 设置为 0,它运行良好。错误是“UNION types text and bigint cannot be matched”
```lang-sql
SELECT NULL AS total_time_spent
FROM tbl1
GROUP BY student_id
UNION ALL
SELECT NULL AS total_time_spent
FROM tbl2
GROUP BY student_id
UNION ALL
SELECT sum(cast(("value" ->> 'seconds') AS integer)) AS total_time_spent
FROM tbl3
GROUP BY student_id
```
我已经尝试了对求和结果或求和输入的各种转换。我从中提取的 json 是 NULL、[] 或类似的东西:
[{"date": "2020-09-17", "seconds": 458}]
根据SQL标准,NULL值存在于每个数据类型中,但缺少显式类型转换,第一个子查询将数据类型解析为text
(早期版本的Postgre SQL 会在这里使用 unknown
,但我们不想在查询结果中使用此数据类型。
错误消息是 type resolution rules for UNION
in PostgreSQL 的结果。
使用明确的类型大小写来避免问题:
SELECT CAST(NULL AS bigint) FROM ...
UNION ...
我是 运行 一个复杂的存储过程,当我有 3 个联合时出现错误,但有 2 个联合时没有错误。如果我删除前两个联合中的任何一个,它运行良好。如果我将其中一个 NULL 设置为 0,它运行良好。错误是“UNION types text and bigint cannot be matched”
```lang-sql
SELECT NULL AS total_time_spent
FROM tbl1
GROUP BY student_id
UNION ALL
SELECT NULL AS total_time_spent
FROM tbl2
GROUP BY student_id
UNION ALL
SELECT sum(cast(("value" ->> 'seconds') AS integer)) AS total_time_spent
FROM tbl3
GROUP BY student_id
```
我已经尝试了对求和结果或求和输入的各种转换。我从中提取的 json 是 NULL、[] 或类似的东西:
[{"date": "2020-09-17", "seconds": 458}]
根据SQL标准,NULL值存在于每个数据类型中,但缺少显式类型转换,第一个子查询将数据类型解析为text
(早期版本的Postgre SQL 会在这里使用 unknown
,但我们不想在查询结果中使用此数据类型。
错误消息是 type resolution rules for UNION
in PostgreSQL 的结果。
使用明确的类型大小写来避免问题:
SELECT CAST(NULL AS bigint) FROM ...
UNION ...