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时能够使用(即创建DB时DBCOMPATIBILITY='B'),在其他数据库兼容模式下不能使用该特性。
支持版本:
- Vastbase G100 V2.2 Build 10(Patch No.8)及以后补丁版本。
- Vastbase G100 V2.2 Build 12及以后版本。
示例
1、创建并切换至兼容模式为MySQL的数据库db_mysql下。
create database db_mysql dbcompatibility 'B';
\c db_mysql;
2、创建测试表并插入数据。
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);
3、设置参数vastbase_sql_mode的值(会话级别)。
set vastbase_sql_mode ='';
4、在执行多表关联查询时使用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)