小记XML写sql的聚合函数用法

一、GROUP_CONCAT

手动查出需要用于查询、展示的字段

用法:(需要GROUP BY) 将每个岗位下的姓名合并为一个以逗号分隔的字符串

SELECT GROUP_CONCAT(DISTINCT u.nickName SEPARATOR ',')
        FROM system_post AS post
        JOIN system_user_post AS up ON post.id = up.post_id
        WHERE .......

-- DISTINCT 可去除重复的值

注:GROUP_CONCAT 的结果有长度限制,默认情况下是 1024 个字符,可以通过调整 group_concat_max_len 系统变量来增加这个限制 

二、JSON_CONTAINS

JSON_CONTAINS是 MySQL 中用于检查一个 JSON 文档是否包含另一个 JSON 文档的函数。它可以用于查询和过滤 JSON 数据类型的字段。

用法:(需要GROUP BY)

select * from table where JSON_CONTAINS(notice_emp, #{noticeId})

这里会返回所有 notice_emp中包含 noticeId的行。

三、FIND_IN_SET

select COUNT(*) from table
     where status = '0' AND deleted = '0'
     AND (
     person_id = #{id}
     OR FIND_IN_SET(#{id}, REPLACE(REPLACE(person_id, '[', ''), ']', '')) > 0
      )


-- 数据库存储person_id字段格式为:1024 或者[1024,1,2]

FIND_IN_SET 返回 ID 在列表中的位置(从 1 开始),所以结果大于 0 表示 ID 存在于列表中。

注:最终得到的结果是一个纯粹的逗号分隔字符串 1,2,3,适合使用 FIND_IN_SET 函数进行处理

你可能感兴趣的:(sql,xml,数据库)