【发布时间】:2022-01-26 15:04:39
【问题描述】:
如何从 SQL 的 JSON 列中的项目中获取最后一个元素?
我有:
| id | log_json |
| 1 | {'model':'n1n', 'serial':'serial1', 'msg':'last_msg_serial1'} |
| 2 | {'model':'n1n', 'serial':'serial1', 'msg':'second_msg_serial1'} |
| 3 | {'model':'n1n', 'serial':'serial1', 'msg':'first_msg_serial1'} |
| 4 | {'model':'z2z', 'serial':'serial2', 'msg':'last_msg_serial2'} |
| 5 | {'model':'f3f', 'serial':'serial3', 'msg':'last_msg_serial3'} |
| 6 | {'model':'f3f', 'serial':'serial3', 'msg':'first_msg_serial3'} |
我只需要每个“系列”的最后一项。喜欢:
| id_log | model | serial | msg |
| 1 | 'n1n' | 'serial1' | 'last_msg_serial1' |
| 4 | 'z2z' | 'serial2' | 'last_msg_serial2' |
| 5 | 'f3f' | 'serial3' | 'last_msg_serial3' |
我正在尝试:
SELECT
id as id_log,
JSON_UNQUOTE(log_json->"$.model") as model,
JSON_UNQUOTE(log_json->"$.serial") as serial,
JSON_UNQUOTE(log_json->"$.msg") as msg
FROM table_mysql, (
SELECT max(id) as last_id
FROM table_mysql GROUP BY JSON_UNQUOTE(log_json->"$.serial")
) t1
WHERE id = t1.last_id
GROUP BY JSON_UNQUOTE(log_json ->"$.serial")
【问题讨论】: