MySQL で特定の親行のすべての子行を見つけるソリューション

MySQL で特定の親行のすべての子行を見つけるソリューション

序文

注: テストデータベースのバージョンはMySQL 8.0です

テーブルを作成し、ユーザー scott でデータを入力する必要がある場合は、以下を参照してください。

スコットはテーブルを作成し、データのSQLスクリプトを入力します

1. 需要

JONES に直接的または間接的に勤務するすべての従業員 (つまり、JONES の部下の部下) を検索します。

JONES 傘下の従業員リストは次のとおりです。

±------±-----+
| 名前 | レベル |
±------±-----+
| ジョーンズ | 1 |
| スコット | 2 |
| フォード | 2 |
| アダムス | 3 |
| スミス | 3 |
±------±-----+

2. 解決策

数字の絶対的な最上部と最下部に移動できることは非常に便利です。

このソリューションには特別なフォーマットは必要ありません。目標は、従業員 JONES の配下のすべての従業員 (JONES 自身も含む) を返すことです。

このタイプのクエリは、Oracle の connect by や SQL Server/DB 2/MySQL 8.0 の with 句などの再帰 SQL 拡張機能の有用性を示しています。

再帰emp2(ename,empno,lvl)として
(
SELECT ename,empno,1 レベル
 empから 
 ename = 'JONES' の場合
ユニオンALL
e1.ename、e1.empno、lvl + 1 を選択
 emp e1、emp2 e2から
 ここで、e1.mgr = e2.empno
)
emp2からename、lvlを選択

テストログ:

mysql> 再帰emp2(ename,empno,lvl)として
 -> (
 -> ename、empno、1 レベルを選択します
 -> empから
 -> ename = 'JONES' の場合
 -> 結合ALL
 -> e1.ename、e1.empno、lvl + 1 を選択
 -> emp e1、emp2 e2 から
 -> e1.mgr = e2.empno の場合
 -> )
 -> emp2 から ename、lvl を選択します。
+-------+------+
| 名前 | レベル |
+-------+------+
| ジョーンズ | 1 |
| スコット | 2 |
| フォード | 2 |
| アダムス | 3 |
| スミス | 3 |
+-------+------+
セット内の 5 行 (0.01 秒)

要約する

これで、MySQL で特定の親行のすべての子行を検索する方法についての説明は終わりです。MySQL で特定の親行のすべての子行を検索する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  Linux での Docker のインストールと展開の例

>>:  ウェブサイトのアクセス速度を向上させるための徹底的な最適化に関するヒント

推薦する

Vue の大容量ファイルアップロードとブレークポイント再開アップロードの実装

目次ファイルアップロードのための2つのソリューションファイルストリーム(フォームデータ)に基づくクラ...

Vueは動的に生成されたコンポーネントをドラッグアンドドロップする要件を実装します

目次製品要件アイデア問題ライブラリ選択をドラッグコンポーネントを生成する方法コンポーネントを生成する...

よく忘れられがちな CSS のヒント 26 選

これは、よく使われるけれども忘れられがちな CSS 実装方法のコレクションです。抜けや追加があれば、...

Vueのメソッドとプロパティの詳細な説明

Vueのメソッドとプロパティ1. 方法使用法 1メソッド: {メソッド名: function(){}...

docker-maven-pluginプラグインは対応するjarパッケージを取得できません

docker-maven-plugin プラグインを使用する場合、Maven は対応する jar パ...

背景画像のみを180度回転させるCSS3実装例

1. 心の旅最近コックピットを書いていたときに、背景画像を単純に特定の角度に回転させるという問題につ...

Linux ベースの MySQL マスター スレーブ構成の全プロセスを記録する

mysql マスタースレーブ構成1. 準備ホスト: 192.168.244.128スレーブ: 192...

CentOS 7 でゲートウェイを変更して IP を設定する方法の例

Centos7 バージョンをインストールするときに、外部ネットワークへの接続を選択すると、外部ネット...

Web データ ストレージ: Cookie、UserData、SessionStorage、WebSqlDatabase

クッキーこれはクライアント ブラウザの状態を保存するための標準的な方法です。Cookie はブラウザ...

MySQL マスタースレーブ同期における server-id の例の詳細な説明

序文MySQL クラスターを構築する場合、当然のことながら、データの一貫性を確保するために、データベ...

Tomcat セキュリティ仕様 (Tomcat セキュリティ強化と仕様)

tomcat はオープンソースの Web サーバーです。Tomcat ベースの Web は実行効率...

Dockerボリュームコンテナ間のデータ共有の実装

ボリュームとは何ですか?ボリュームは英語で容量を意味し、Docker ではデータ ボリューム、つまり...

グループ化されたクエリでのGROUP BYの使用とSQL実行順序の説明

SQL では、GROUP BY は SELECT の結果のデータをグループ化するために使用されます。...

Linux 圧縮ファイルコマンド zip の使用例

「.zip」形式は、Windows システムでファイルを圧縮するために使用されます。実際、「.zip...