VastbaseG100

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

Menu

COUNT

功能描述

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

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

参数vastbase_sql_mode同时控制了B模式下的多种SQL校验规则,请注意参数取值对其它功能的影响。

注意事项

该功能仅在数据库兼容模式为MySQL时能够使用(即创建DB时DBCOMPATIBILITY='B'),在其他数据库兼容模式下不能使用该特性。

示例

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)