mysql中使用聚合函数结果集为空,仍显示size为1,所有元素为Null问题的解决

柔情只为你懂 2022-05-21 03:56 209阅读 0赞

1.不使用聚合函数sql:

select * from sys_role_data a

left JOIN sys_office b ON a.office_id = b.id

LEFT JOIN sys_role c on a.role_id = c.id WHERE a.del_flag = ‘0’

如果没有查出结果,则展示无记录

70

2.使用 聚合函数, 我使用的是group_concat函数,来将结果部分元素聚合

SELECT
a.id AS “id”,
a.kind AS “kind”,
a.type AS “type”,
a.role_id AS “roleId”,
b.name AS “officeName”,
c.name AS “roleName”,
a.office_id AS “officeId”,
group_concat(a.data_id) AS “dataId”,
group_concat(a.data_name) AS “dataName”,
a.useable AS “useable”,
a.del_flag AS “delFlag”,
a.remarks AS “remarks”,
a.create_date AS “createDate”,
a.create_by AS “createBy.id”,
a.update_date AS “updateDate”,
a.update_by AS “updateBy.id”
FROM sys_role_data a
LEFT JOIN
sys_office b
ON a.office_id = b.id
LEFT JOIN
sys_role c
ON a.role_id = c.id

WHERE a.del_flag = ‘0’

70 1

没有查询到结果,但是却显示第一条记录,共一条,即出现了为Null的结果集。
此时需要我们在使用聚合函数时,在最后增加分组操作

SELECT
a.id AS “id”,
a.kind AS “kind”,
a.type AS “type”,
a.role_id AS “roleId”,
c.name AS “roleName”,
group_concat(a.data_id) AS “dataId”,
group_concat(a.data_name) AS “dataName”,
a.useable AS “useable”,
a.del_flag AS “delFlag”,
a.remarks AS “remarks”,
a.create_date AS “createDate”,
a.create_by AS “createBy.id”,
a.update_date AS “updateDate”,
a.update_by AS “updateBy.id”
FROM sys_role_data a
LEFT JOIN
sys_role c
ON a.role_id = c.id

WHERE a.del_flag = ‘0’
and a.id = -1
GROUP BY a.id
watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3ODM3Mzgy_size_16_color_FFFFFF_t_70

即对我们关心的主键数据进行分组,避免了产生空记录的问题

发表评论

表情:
评论列表 (有 0 条评论,209人围观)

还没有评论,来说两句吧...

相关阅读