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 | 总部      |        4
(1 row)

4、清理环境。

DROP TABLE sys_dept,work_letters_document_responsibility_basis;
SET vastbase_sql_mode ='ONLY_FULL_GROUP_BY,ANSI_QUOTES,pipes_as_concat,pad_char_to_full_length,sql_mode_strict,no_zero_date';