MySql数据库查询多级部门及其下的所有用户信息
关于多级别菜单栏或者权限系统中部门上下级的树形遍历,oracle中有connect by来实现,mysql没有这样的便捷途径,所以MySQL遍历数据表是我们经常会遇到的头痛问题,下面通过数据库函数来实现 1、建表 ① 机构表 CREATE TABLE `t_sys_org` ( `ID` varchar(64)
关于多级别菜单栏或者权限系统中部门上下级的树形遍历,oracle中有connect by来实现, mysql没有这样的便捷途径,所以MySQL遍历数据表是我们经常会遇到的头痛问题,下面通过数据库函数来实现
1、建表
① 机构表
CREATE TABLE `t_sys_org` (
`ID` varchar(64) NOT NULL COMMENT '主键ID',
`CODE` varchar(60) DEFAULT NULL COMMENT '编码',
`NAME` varchar(200) DEFAULT NULL COMMENT '机构名称',
`FULLNAME` varchar(100) DEFAULT NULL,
`SHORTNAME` varchar(60) DEFAULT NULL COMMENT '机构简称',
`ORGCODE` varchar(60) DEFAULT NULL COMMENT '机构代码',
`PARENTID` varchar(64) DEFAULT NULL COMMENT '上级机构',
`DEPTH` int(10) DEFAULT NULL COMMENT '深度',
`SORT` varchar(24) DEFAULT NULL COMMENT '排序',
`REMARK` varchar(200) DEFAULT NULL COMMENT '备注',
`STATUS` varchar(4) DEFAULT NULL COMMENT '状态',
`ORGTYPE` varchar(2) DEFAULT NULL COMMENT '机构类型',
`CODENUM` varchar(80) DEFAULT NULL COMMENT '单位代码证编号',
`LEAGALPERSON` varchar(18) DEFAULT NULL COMMENT '机构法人',
`LEAGALPERSONID` int(10) DEFAULT NULL COMMENT '负责人ID',
`SPLITLEADER` varchar(80) DEFAULT NULL COMMENT '分管领导',
`SPLITLEADERID` int(10) DEFAULT NULL COMMENT '分管领导ID',
`ADMINLEVEL` varchar(16) DEFAULT NULL COMMENT '机构行政级别',
`NATURE` varchar(16) DEFAULT NULL COMMENT '机构性质',
`WORKNATUREB` varchar(100) DEFAULT NULL COMMENT '机构工作性质(大类)',
`WORKNATUREM` varchar(16) DEFAULT NULL COMMENT '机构工作性质(中类)',
`WORKNATURES` varchar(100) DEFAULT NULL COMMENT '机构工作性质(小类)',
`ARECODE` varchar(16) DEFAULT NULL COMMENT '单位所隶属行政区划',
`ADDRESS` varchar(800) DEFAULT NULL COMMENT '单位驻地与地址',
`MAILCODE` varchar(16) DEFAULT NULL COMMENT '单位邮编',
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='机构表(T_SYS_ORG)';
②用户表
CREATE TABLE `t_sys_user` (
`ID` varchar(64) NOT NULL COMMENT '主键ID',
`ACCOUNT` varchar(200) DEFAULT NULL COMMENT '账号',
`USERNAME` varchar(60) DEFAULT NULL COMMENT '姓名',
`PASSWORD` varchar(120) DEFAULT NULL COMMENT '密码',
`IDCARD` varchar(72) DEFAULT NULL COMMENT '身份证号',
`SEX` varchar(4) DEFAULT NULL COMMENT '性别',
`CREATETIME` datetime DEFAULT NULL COMMENT '创建时间',
`MODTIME` datetime DEFAULT NULL COMMENT '修改时间',
`MODPWDTIME` datetime DEFAULT NULL COMMENT '修改密码时间',
`REMARK` varchar(500) DEFAULT NULL COMMENT '备注',
`STATUS` int(10) DEFAULT NULL COMMENT '状态',
`ADMINLEVLE` varchar(16) DEFAULT NULL COMMENT '行政级别',
`ALARMBELL` varchar(16) DEFAULT NULL COMMENT '警衔',
`ARCHIVEDEPTID` decimal(10,0) DEFAULT NULL COMMENT '档案部门ID',
`AUTHORIZED` varchar(16) DEFAULT NULL COMMENT '编制',
`BIRTHDAY` datetime DEFAULT NULL COMMENT '出生日期',
`BIRTHPLACE` varchar(128) DEFAULT NULL COMMENT '籍贯',
`CREATEBY` decimal(10,0) DEFAULT NULL COMMENT '创建人',
`EDUCATIONALBG` varchar(16) DEFAULT NULL COMMENT '最高学历',
`MODIFYBY` decimal(10,0) DEFAULT NULL COMMENT '修改人',
`NATION` varchar(16) DEFAULT NULL COMMENT '民族',
`POLICENUMBER` varchar(64) DEFAULT NULL COMMENT '警号',
`POLITICAL` varchar(16) DEFAULT NULL COMMENT '政治面貌',
`POSITION` varchar(16) DEFAULT NULL COMMENT '职务',
`POSITIONLEVLE` varchar(16) DEFAULT NULL COMMENT '职级',
`SORTNO` varchar(200) DEFAULT NULL COMMENT '排序级别',
`WORKDEPTID` varchar(64) DEFAULT NULL COMMENT '工作部门ID',
`ORGID` varchar(64) DEFAULT NULL COMMENT '所属机构',
`USERSTATUS` decimal(10,0) DEFAULT NULL COMMENT '用户状态',
`COCALLSTATUS` decimal(10,0) DEFAULT NULL COMMENT '即时通同步状态',
`COMPOSITIONDEPTID` decimal(10,0) DEFAULT NULL COMMENT '编制部门',
`RECORDSMAGORG` varchar(100) DEFAULT NULL COMMENT '档案管理单位',
`NICKNAME` varchar(64) DEFAULT NULL COMMENT '昵称',
`WORKNUMBER` varchar(100) DEFAULT NULL COMMENT '工作证号',
`USERKEY` text COMMENT '用户键值',
`PARTJOBNO` varchar(4) DEFAULT NULL,
`IMG_PATH` varchar(200) DEFAULT NULL COMMENT '照片路径',
PRIMARY KEY (`ID`),
UNIQUE KEY `ACCOUNT_UNIQUE` (`ACCOUNT`) USING BTREE,
KEY `IND_SUSR_ORGID` (`ORGID`) USING BTREE,
KEY `IND_SUSR_STAT` (`STATUS`) USING BTREE,
KEY `IND_SUSR_STNO` (`SORTNO`) USING BTREE,
KEY `IND_SUSR_USTAT` (`USERSTATUS`) USING BTREE,
KEY `IND_SUSR_WDPID` (`WORKDEPTID`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表';
3、使用FUNCTION根据指定的ID流水号获取多级部门编号(包括当前ID)
BEGIN
DECLARE sTemp VARCHAR(4000);
DECLARE sTempChd VARCHAR(4000);
SET sTemp = '$';
SET sTempChd = cast(orgId as char);
WHILE sTempChd is not NULL DO
SET sTemp = CONCAT(sTemp,',',sTempChd);
SELECT group_concat(id) INTO sTempChd FROM t_sys_org where FIND_IN_SET(parentId,sTempChd)>0;
END WHILE;
return sTemp;
END
4、根据部门ID获取该部门下的所有子部门
select id from t_sys_org where FIND_IN_SET ( id, queryAllChildByOrg('448457')) order by code;
5、根据获取的子部门获取其所有的用户信息
select username, WORKDEPTID from t_sys_user where WORKDEPTID in select id from t_sys_org where FIND_IN_SET ( id, queryAllChildByOrg('448457')) order by code)

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

MySQL 및 Phpmyadmin은 강력한 데이터베이스 관리 도구입니다. 1) MySQL은 데이터베이스 및 테이블을 작성하고 DML 및 SQL 쿼리를 실행하는 데 사용됩니다. 2) PHPMYADMIN은 데이터베이스 관리, 테이블 구조 관리, 데이터 운영 및 사용자 권한 관리에 직관적 인 인터페이스를 제공합니다.

Oracle은 데이터베이스 회사 일뿐 만 아니라 클라우드 컴퓨팅 및 ERP 시스템의 리더이기도합니다. 1. Oracle은 데이터베이스에서 클라우드 서비스 및 ERP 시스템에 이르기까지 포괄적 인 솔루션을 제공합니다. 2. OracleCloud는 AWS와 Azure에 도전하여 IAA, PAAS 및 SAAS 서비스를 제공합니다. 3. E-BusinessSuite 및 FusionApplications와 같은 Oracle의 ERP 시스템은 기업이 운영을 최적화하는 데 도움이됩니다.

MySQL에서 외국 키의 기능은 테이블 간의 관계를 설정하고 데이터의 일관성과 무결성을 보장하는 것입니다. 외국 키는 참조 무결성 검사 및 계단식 작업을 통해 데이터의 효과를 유지합니다. 성능 최적화에주의를 기울이고 사용할 때 일반적인 오류를 피하십시오.

MySQL과 Mariadb의 주요 차이점은 성능, 기능 및 라이센스입니다. 1. MySQL은 Oracle에 의해 개발되었으며 Mariadb는 포크입니다. 2. MariaDB는 높은 하중 환경에서 더 나은 성능을 발휘할 수 있습니다. 3. Mariadb는 더 많은 스토리지 엔진과 기능을 제공합니다. 4.MySQL은 듀얼 라이센스를 채택하고 MariaDB는 완전히 오픈 소스입니다. 선택할 때 기존 인프라, 성능 요구 사항, 기능 요구 사항 및 라이센스 비용을 고려해야합니다.

SQL은 관계형 데이터베이스를 관리하는 표준 언어이며 MySQL은 SQL을 사용하는 데이터베이스 관리 시스템입니다. SQL은 CRUD 작업을 포함한 데이터베이스와 상호 작용하는 방법을 정의하는 반면 MySQL은 SQL 표준을 구현하고 저장 프로 시저 및 트리거와 같은 추가 기능을 제공합니다.

MySQL 및 Phpmyadmin은 다음 단계를 통해 효과적으로 관리 할 수 있습니다. 1. 데이터베이스 작성 및 삭제 : Phpmyadmin을 클릭하여 완료하십시오. 2. 테이블 관리 : 테이블을 만들고 구조를 수정하고 인덱스를 추가 할 수 있습니다. 3. 데이터 작동 : 삽입, 업데이트, 데이터 삭제 및 SQL 쿼리 실행을 지원합니다. 4. 가져 오기 및 내보내기 데이터 : SQL, CSV, XML 및 기타 형식을 지원합니다. 5. 최적화 및 모니터링 : 최적화 가능한 명령을 사용하여 테이블을 최적화하고 쿼리 분석기 및 모니터링 도구를 사용하여 성능 문제를 해결하십시오.

Redis는 주로 데이터베이스, 캐시 및 메시지 중개인으로 사용되는 메모리 데이터 구조 스토리지 시스템입니다. 핵심 기능에는 단일 스레드 모델, I/O 멀티플렉싱, 지속 메커니즘, 복제 및 클러스터링 기능이 포함됩니다. Redis는 일반적으로 캐싱, 세션 저장 및 메시지 대기열을위한 실제 응용 프로그램에 사용됩니다. 올바른 데이터 구조를 선택하고 파이프 라인 및 트랜잭션을 사용하여 모니터링 및 튜닝을 통해 성능을 크게 향상시킬 수 있습니다.

MySQL에서는 altertabletable_nameaddcolumnnew_columnvarchar (255) 이후에 필드를 추가하여 altertabletable_namedropcolumncolumn_to_drop을 사용하여 필드를 삭제합니다. 필드를 추가 할 때는 쿼리 성능 및 데이터 구조를 최적화하기위한 위치를 지정해야합니다. 필드를 삭제하기 전에 작업이 돌이킬 수 없는지 확인해야합니다. 온라인 DDL, 백업 데이터, 테스트 환경 및 저하 기간을 사용하여 테이블 구조 수정은 성능 최적화 및 모범 사례입니다.
