PostgreSQL 9.6。
create table jon.vins (vin citext primary key);
insert into jon.vins values
('3GNAXUEV1KL221776'),
('3GNAXHEV2KS548975');
CREATE TABLE jon.describe_vehicle (
vin citext primary key,
response jsonb);
Run Code Online (Sandbox Code Playgroud)
jon.describe_vehicle 仅包含 1 vin,3GNAXHEV2KS548975 的数据;
这个查询:
select a.vin,
b.response->'attributes'->>'bestMakeName' as make
from jon.vins a
left join jon.describe_vehicle b on a.vin = b.vin;
Run Code Online (Sandbox Code Playgroud)
返回我所期望的,每个 vin in 一行jon.vins:
vin | make
-------------------+-----------
3GNAXUEV1KL221776 |
3GNAXHEV2KS548975 | Chevrolet
(2 rows)
Run Code Online (Sandbox Code Playgroud)
但是这个查询:
select a.vin,
jsonb_array_elements(b.response->'style')->'attributes'->>'name' as style
from jon.vins a
left join jon.describe_vehicle b on a.vin = …Run Code Online (Sandbox Code Playgroud)