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';