只使用MySQL查询有没有办法将JSON对象列表转换并选择到一个列中?
例如,我有一个表event_time
,它基本上是表event
的子表,因此对于每个event
,有许多event_time
(s)。我要做的是创建如下的查询:
select e.*, (some select and conversion to a json array query) as 'event_times'
from event e;
我一直试图将MySQL的JSON_OBJECT
和JSON_ARRAY
结合起来,但似乎并不支持。
以下查询有效但未给出我想要的结果(因为LIMIT 1
)
select e.*,
(select json_object("id", et.id, "event_id", et.event_id, "start_time", et.start_time, "end_time", et.end_time)
from event_time et
where et.event_id = e.id
LIMIT 1) as 'event_times'
from event e;
如果某人有办法填写此查询的结果
select json_object("id", id, "event_id", event_id, "start_time", start_time, "end_time", end_time) as 'event_time' from event_time;
进入JSON_ARRAY
我觉得它会给我我正在寻找的东西。任何帮助将不胜感激。
答案 0 :(得分:0)
感谢@BradBaskin已经在另一个问题上回答了这个问题。
https://stackoverflow.com/a/37474200/3071052
我接受了他的回答,并根据我的需要稍作修改。
select e.*,
(select CAST(
CONCAT('[',
GROUP_CONCAT(
JSON_OBJECT('id',et.id,'event_id',et.event_id,
'start_time', date_format(et.start_time, '%Y-%m-%d %H:%i'),
'end_time', date_format(et.end_time, '%Y-%m-%d %H:%i'))
),
']')
AS JSON)
from event_time et
where et.event_id = e.id
) as event_times
from event e;