VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

COUNT

功能描述

Vastbase G100在MySQL兼容模式下,支持在多表关联查询时使用COUNT聚集函数

仅当参数vastbase_sql_mode的取值中不包含ONLY_FULL_GROUP_BY时支持此特性。

从V2.2 Build 10(Patch No.9)开始,参数vastbase_sql_mode同时控制了B模式下的多种SQL校验规则,请注意参数取值对其它功能的影响。

注意事项

  • 该功能仅在数据库兼容模式为MySQL时支持(即数据库实例初始化时指定DBCOMPATIBILITY='B')。

  • 支持版本:

    • Vastbase G100 V2.2 Build 10(Patch No.8)及以后补丁版本。
    • Vastbase G100 V2.2 Build 12及以后版本。

示例

1、创建测试表并插入数据。

create table sys_dept(dept_id int,dept_name_abbreviation int);
insert into sys_dept values(90000044,190000044);
insert into sys_dept values(90000044,290000044);

create table work_letters_document_responsibility_basis (id int,dept_id int,save_state varchar(20),del_flag BOOLEAN,type int);
insert into work_letters_document_responsibility_basis values(1,90000044,'2',0,3);
insert into work_letters_document_responsibility_basis values(2,90000044,'2',0,3);

2、设置参数vastbase_sql_mode的值(会话级别)。

set vastbase_sql_mode ='';

3、在执行多表关联查询时使用COUNT函数。

select
dept.dept_id,
case
when dept.dept_id = 90000044 then '总部'
else dept.dept_name_abbreviation
end as dept_name,
count(basis.id) as countNum
from
work_letters_document_responsibility_basis basis
left join sys_dept dept on
basis.dept_id = dept.dept_id
where
basis.del_flag = 0
and basis.save_state = '2'
and basis.type = 3
and dept.dept_id = 90000044;

返回结果如下:

 dept_id  | dept_name | countNum
----------+-----------+----------
 90000044 |         0 |        4
(1 row)