记 Mysql 部分用法

JSON

1、查询数组中对象

JSON_CONTAINS 用法

1
2
3
4
5
select * from circulation
where JSON_CONTAINS(goods->'$[*].name', '["海带结(香辣味)150克/袋"]', '$')

select * from circulation
where JSON_CONTAINS(goods->'$[*].gid', '[20]', '$')

2、Json 字符串转化为 Json 对象

CONVERT 用法

1
select CONVERT('{"mail": "amy@gmail.com", "name": "Amy"}',JSON)

3、元素转化为数组

JSON_ARRAY 用法

1
SELECT JSON_ARRAY(1, "abc", NULL, TRUE, CURTIME())

4、数组中查询元素

JSON_CONTAINS + JSON_ARRAY 用法

1
select JSON_CONTAINS(JSON_ARRAY(1,2,3,4,5,6),'6')

5、数组模糊查询

JSON_SEARCH用法

1
select * from table where JSON_SEARCH(profiles, 'all', 'sales%') is not null

6、JSON_SET 修改数据

1
2
3
4
5
6
--- 数组
set id = JSON_SET(id,'$[0]',1)

--- Json对象
set info ='{}'
set info =JSON_SET(info,'$."1"',"{}")

7、利用 JSON_CONTAINS 实现 On

1
" LEFT JOIN `ag_user_group` as ug  on JSON_CONTAINS(u.user_group_id, JSON_ARRAY(ug.id), '$')"

user_group_id 为数组,ug.idint 格式

常规

1、查询重复记录

1
2
select * from merchant
where num in (select num from synk.merchant group by num having count(num) > 1)

统计

1、count 与 distinct 结合使用,限制条件的情况下去除重复数据

1
2
SELECT count(distinct id, if(id is not null,true,null)) 
FROM flow_view;