MySQL 查询语句:获取部门信息并根据条件合并结果
SELECT
a.dept_id 'id',
a.dept_code 'dataValue',
a.dept_name 'dataText',
'0' 'score',
'0' 'serial'
FROM
sysmn.sys_dept_dict a
LEFT JOIN (
SELECT *
FROM mdm.mdm_standard_dictionary_detail b
WHERE b.audit_status = '1' AND b.stop_flag = '0'
) t ON a.dept_code = t.dict_value_code
WHERE
a.stop_flag = '0'
AND t.dict_id = (
SELECT c.var_value
FROM mdm.sys_var c
WHERE c.var_code = 'YFPZ'
)
ORDER BY
t.sort_id
UNION ALL
SELECT
a.dept_id 'id',
a.dept_code 'dataValue',
a.dept_name 'dataText',
'0' 'score',
'0' 'serial'
FROM
sysmn.sys_dept_dict a
WHERE
a.dept_name = '病区药房';
该 SQL 查询语句包含以下步骤:
-
从 sysmn.sys_dept_dict 表中获取部门信息:
SELECT a.dept_id 'id', a.dept_code 'dataValue', a.dept_name 'dataText', '0' 'score', '0' 'serial' FROM sysmn.sys_dept_dict a
-
左连接 mdm.mdm_standard_dictionary_detail 表:
LEFT JOIN (SELECT * FROM mdm.mdm_standard_dictionary_detail b WHERE b.audit_status = '1' AND b.stop_flag = '0') t ON a.dept_code = t.dict_value_code- 条件:
b.audit_status = '1' AND b.stop_flag = '0' - 连接条件:
a.dept_code = t.dict_value_code
-
筛选结果:
WHERE a.stop_flag = '0' AND t.dict_id = (SELECT c.var_value FROM mdm.sys_var c WHERE c.var_code = 'YFPZ')- 条件:
a.stop_flag = '0' - 条件:
t.dict_id = (SELECT c.var_value FROM mdm.sys_var c WHERE c.var_code = 'YFPZ')
-
排序结果:
ORDER BY t.sort_id
-
使用 UNION ALL 合并结果:
UNION ALL将两个查询的结果合并,并包含重复记录。
-
添加额外的查询条件:
SELECT a.dept_id 'id', a.dept_code 'dataValue', a.dept_name 'dataText', '0' 'score', '0' 'serial' FROM sysmn.sys_dept_dict a WHERE a.dept_name = '病区药房'- 条件:
a.dept_name = '病区药房'
该查询语句能够获取满足条件的所有部门信息,并根据 sort_id 进行排序,最后使用 UNION ALL 将所有结果合并在一起。
注意:
- 使用
UNION ALL可以保留重复记录。 - 使用
UNION会自动去除重复记录。 - 该查询语句可以进一步优化,例如使用子查询来获取
t.dict_id的值。
原文地址: https://www.cveoy.top/t/topic/pf6b 著作权归作者所有。请勿转载和采集!