侠客的博客

略懂Html,Css,JavaScript,JQuery,Linux,PHP,Java,Vue,Python

mysql 直接查询json数据的方法json_extract

最近有客户有需求,就是把操作日志,增加筛选功能,可以更加详细的看数据

因为我存储数据的方法很粗暴

create table xaake_log_admin_201912
(
    id bigint auto_increment comment '自增ID'
        primary key,
    admin_id int not null comment '管理员ID',
    controller varchar(36) not null comment '控制器',
    action varchar(36) not null comment '方法',
    data longtext null comment '操作数据',
    do_ip varchar(12) not null comment '操作IP',
    do_time int not null comment '操作时间',
    is_delete tinyint(1) default 0 null comment '是否删除'
)
comment '管理员行为表' charset=utf8;

data中存储的数据都是json数据,例如:

{"goods_id":1,"spec_keys":"1_4","spec_values":"\u5185\u5b58:16G \u989c\u8272:\u7ea2\u8272","price":"1231.00","id":7}

这种数据,如果我要筛选出goods_id值为1的日志,怎么办?

查看了下mysql官方手册,mysql 5.7+版本才支持这个json的查询函数json_extract

使用方法很简单:

SELECT *FROM `xaake_log_admin_201912` WHERE json_extract(`data`, '$.goods_id') = 1

然后就可以筛选出goods_id值为1的所有记录了


发表评论:

©Copyright 2019 52400073.com Author by xaake,基于 Zblog