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
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











MySQLとPHPMyAdminは、強力なデータベース管理ツールです。 1)MySQLは、データベースとテーブルを作成し、DMLおよびSQLクエリを実行するために使用されます。 2)PHPMyAdminは、データベース管理、テーブル構造管理、データ操作、ユーザー許可管理のための直感的なインターフェイスを提供します。

Oracleはデータベース会社だけでなく、クラウドコンピューティングとERPシステムのリーダーでもあります。 1。Oracleは、データベースからクラウドサービスおよびERPシステムへの包括的なソリューションを提供します。 2。Oraclecloudは、AWSとAzureに挑戦し、IAAS、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)afterexisting_columnを使用してフィールドを追加し、andtabletable_namedopcolumncolumn_to_dropを使用してフィールドを削除します。フィールドを追加するときは、クエリのパフォーマンスとデータ構造を最適化する場所を指定する必要があります。フィールドを削除する前に、操作が不可逆的であることを確認する必要があります。オンラインDDL、バックアップデータ、テスト環境、および低負荷期間を使用したテーブル構造の変更は、パフォーマンスの最適化とベストプラクティスです。
