How to get the latest value from the JSON document inside MySQL column?
Mysql版本是8.0.18-commercial
我编写了以下查询,它显示 details 列
的结果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 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
的最后一个元素
我想要的输出是用 latest date 显示元素的 Msg :
1 2
| ColumnName ColumnValue
Msg Job failed |
我写了以下查询,但它给出了 null 输出
- 因此 stackoverflow.com/questions/39906435/... 了解如何将 JSON 数组转换为行。然后您可以使用 stackoverflow.com/questions/7745609/... 来获取具有最新值的行。
-
您想要最后一个数组元素的消息,还是具有最新日期的元素的消息?
-
我想要最新日期的元素的消息
-
出于好奇,您为什么将其存储为 JSON?如果您以正常方式存储它会更容易,每个数组成员在一行中,每个对象字段在一个正常列中。在大多数情况下,将 JSON 用于此类结构数据会使查询 SQL 数据库中的数据变得更加困难。
-
我正在从 mongo 集合中迁移数据,它可以以 JSON 文档的形式迁移
如果您正在运行 MySQ。 8.0,您可以使用 json_table() 将 json 数组取消嵌套到行,然后使用 row_number() 保留每个原始行的最新记录。
假设你的表的主键是 id,你可以这样表述:
关于 DB Fiddle 的演示:
1 2 3
| msg | activity_date
:--------- | :------------------
Job failed | 2020-07-20 16:35:24 |