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 查询语句包含以下步骤:

  1. 从 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
  2. 左连接 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
  3. 筛选结果:

    • 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')
  4. 排序结果:

    • ORDER BY t.sort_id
  5. 使用 UNION ALL 合并结果:

    • UNION ALL 将两个查询的结果合并,并包含重复记录。
  6. 添加额外的查询条件:

    • 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 的值。
MySQL 查询语句:获取部门信息并根据条件合并结果

原文地址: https://www.cveoy.top/t/topic/pf6b 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录