У меня есть две очень простые таблицы sessions
, в которых есть столбец json
, например:
+----+-------------------------------------------------------+
| id | data |
+----+-------------------------------------------------------+
| 1 | { "user_id": "bc2166dd-ca1d-41c6-9c66-610f844ca139" } |
+----+-------------------------------------------------------+
А также таблица users
, например:
+--------------------------------------+--------------------+
| id | email |
+--------------------------------------+--------------------+
| bc2166dd-ca1d-41c6-9c66-610f844ca139 | foobar@example.com |
+--------------------------------------+--------------------+
Есть ли способ присоединиться к содержимому типа столбца json
, как этот?
with recursive active_sessions AS (
select
data->'users_id' as sid
from sessions
)
select *
from active_sessions
join users ON active_sessions.sid = users.id
where sid is not null;
В моих основных попытках я застрял и не могу заставить текст json быть в состояниипри соединении я получаю эту ошибку:
[22P02] ERROR: invalid input syntax for uuid: ""bc2166dd-ca1d-41c6-9c66-610f844ca139""
обратите внимание на двойные кавычки ...?
Я также пытался привести user_id
ввыбор вроде (data->'user_id')::uuid
но без везения.