Кир*_*кий 6 postgresql json join
有两张桌子。
表格1
id integer
color_name character(64)
Run Code Online (Sandbox Code Playgroud)
表2
id integer
jdata jsonb
Run Code Online (Sandbox Code Playgroud)
Json 数据如下所示:
{"price": 4500, "colorId": 5}
Run Code Online (Sandbox Code Playgroud)
我需要输出颜色和按颜色分组的项目数,所以我尝试使用这个查询:
SELECT Table1.color_name, Table2.jdata ->> 'colorId', count(*)
FROM Table1
INNER JOIN Table2
ON Table1.id = Table2.jdata ->> 'colorId'
group by Table2.jdata ->> 'colorId';
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
错误:运算符不存在:整数 = jsonb
我也试过执行这个:
select Table1.color_name, count(*)
from Table1
join Table2
on (Table2.jdata->>'colorId')::int = Table1.id
group by Table1.color_name
Run Code Online (Sandbox Code Playgroud)
我得到了什么:
错误:无法将类型 jsonb 转换为整数
我认为你需要这个:
select Table1.color_name, count(*)
from Table1
join Table2
on (Table2.jdata->>'colorId')::int = Table1.id
group by Table1.color_name
Run Code Online (Sandbox Code Playgroud)
解决这个问题的简单方法:select cast(value #>> '{}' as integer)
'value' 是可变的 jsonb 类型。
例如:
select cast(to_jsonb('3'::text) #>> '{}' as integer)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11581 次 |
| 最近记录: |