mysql - 如何从 MySQL 列中的 JSON 文档中获取最新值?
问题描述
Mysql 版本是8.0.18-commercial
我编写了以下查询,它显示details
列的结果
select details from table t1;
Output:
[
{
"Msg": "Job Running",
"Task": "IN_PROGRESS",
"Date": "2020-07-20 16:25:15",
},
{
"Msg": "Job failed",
"Task": "IN_PROGRESS",
"Date": "2020-07-20 16:35:24",
}
]
我只想要Msg
最新的最后一个元素的值Date
我想要的输出是显示Msg
元素latest date
:
ColumnName ColumnValue
Msg Job failed
我写了以下查询,但它给出了null
输出
select details->>"$.Msg" from table t1;
解决方案
如果您正在运行 MySQ。8.0,您可以使用json_table()
将 json 数组取消嵌套到行,然后row_number()
保留每个原始行的最新记录。
假设您的表的主键是id
,您可以将其表述为:
select msg, activity_date
from (
select x.*, row_number() over(partition by t.id order by x.activity_date desc) rn
from mytable t
cross join json_table(
t.details,
'$[*]' columns(
msg varchar(50) path '$.Msg',
activity_date datetime path '$.activityDate'
)
) x
) t
where rn = 1
味精 | 活动日期 :--------- | :----------------- 作业失败 | 2020-07-20 16:35:24
推荐阅读
- curl - 如何使用 curl post 获取 HTTP 状态码
- java - 最终局部变量不能赋值,不能赋值给非最终变量
- ios - 由于“无效二进制”,应用程序上传到 itunesConnect 失败,但来自苹果的邮件未提及任何问题
- mysql - mysql / mariadb(或amazon aurora)中多租户方法的实际实现
- node.js - 猫鼬模式是否接受参数
- php - 帮助 SQL SUM()?
- python - 也使用 python 脚本的 Rshiny 应用程序的 Docker 映像
- android - 如何在 android studio 的日历视图中添加静态事件?
- java - Java:何时取消引用变量
- javascript - 如何为特定脚本禁用 Cloudflare 的 Rocket Loader?WordPress