Postgres - 无法加入 UUID 上的 Json 数组值
Postgres - Cannot Join Json Array Values on UUID
所以我有一个 table Profession
:
UUID UUID,
Name TEXT
其中 UUID
是 uuid1, uuid2, uuid3, etc.
然后另一个table Degrees
:
DegreeName TEXT,
Record JSON
其中 Record->'Professions'
json 记录可能包含 Profession.uuid
的列表,例如 {"Professions":"[uuid1,uuid2]"}
,尽管该字段可能是 NULL
,例如 {"Professions":"[]"}
.
以下是我试图加入两个 table 的方式:
SELECT prof.uuid, prof.Name, d.DegreeName
FROM Profession prof
LEFT JOIN (
SELECT DegreeName, json_array_elements(Record->'Professions') prof_uuid
FROM Degrees
) d
ON d.prof_uuid::TEXT=prof.uuid::TEXT
当我这样做时,我只会得到空值。请注意,我转换为 TEXT
是因为我无法将 Professions
数组转换为 UUID
因为空白。
我已经尝试使用 Professions
列表中的值手动搜索 Profession
table 并且有效:
SELECT *
FROM Profession
WHERE uuid = 'someprofuuid'
我缺少一些演员表吗?
我明白了。问题是我使用的是 json_array_elements
而不是 json_array_elements_text
。当我切换它时,连接起作用了:
SELECT prof.uuid, prof.Name, d.DegreeName
FROM Profession prof
LEFT JOIN (
SELECT DegreeName, json_array_elements_text(Record->'Professions') prof_uuid
FROM Degrees
) d
ON d.prof_uuid::TEXT=prof.uuid::TEXT
所以我有一个 table Profession
:
UUID UUID,
Name TEXT
其中 UUID
是 uuid1, uuid2, uuid3, etc.
然后另一个table Degrees
:
DegreeName TEXT,
Record JSON
其中 Record->'Professions'
json 记录可能包含 Profession.uuid
的列表,例如 {"Professions":"[uuid1,uuid2]"}
,尽管该字段可能是 NULL
,例如 {"Professions":"[]"}
.
以下是我试图加入两个 table 的方式:
SELECT prof.uuid, prof.Name, d.DegreeName
FROM Profession prof
LEFT JOIN (
SELECT DegreeName, json_array_elements(Record->'Professions') prof_uuid
FROM Degrees
) d
ON d.prof_uuid::TEXT=prof.uuid::TEXT
当我这样做时,我只会得到空值。请注意,我转换为 TEXT
是因为我无法将 Professions
数组转换为 UUID
因为空白。
我已经尝试使用 Professions
列表中的值手动搜索 Profession
table 并且有效:
SELECT *
FROM Profession
WHERE uuid = 'someprofuuid'
我缺少一些演员表吗?
我明白了。问题是我使用的是 json_array_elements
而不是 json_array_elements_text
。当我切换它时,连接起作用了:
SELECT prof.uuid, prof.Name, d.DegreeName
FROM Profession prof
LEFT JOIN (
SELECT DegreeName, json_array_elements_text(Record->'Professions') prof_uuid
FROM Degrees
) d
ON d.prof_uuid::TEXT=prof.uuid::TEXT