MySQL 8.0 再帰クエリの簡単な使用例

MySQL 8.0 再帰クエリの簡単な使用例

序文

この記事では、MySQL 8.0 の新機能を使用して再帰クエリを実装します。詳細なサンプル コードは記事に記載されています。詳細な概要を見てみましょう。

Mysql8.0 再帰クエリの使用

表のデータは以下のとおりです

+--------+----------+------------+
| 猫ID | 名前 | 親CID |
+--------+----------+------------+
| 12 | 美しさ | 0 |
| 4 | 衣類 | 0 |
| 5 | 婦人服 | 4 |
| 6 | メンズウェア | 4 |
| 7 | 子供服 | 4 |
| 19 | 美容とボディ | 12 |
| 18 | メイクアップ | 12 |
| 13 | スキンケア | 12 |
| 15 | スキンケアセット | 13 |
| 40 | 日焼け止め | 13 |
| 39 | メイク落とし | 13 |
| 38 | リップクリーム | 13 |
| 17 | ローションとクリーム | 13 |
| 16 | フェイシャルマスク | 13 |
| 14 | トナー | 13 |
+--------+----------+------------+

1. 「衣類」カテゴリの下にあるすべてのサブカテゴリを見つける必要があります

再帰的なtype_cteとして(
    cat_id = 4 の t_category から * を選択
    すべて結合
    t_category tからt.*を選択
                        t.parent_cid = type_cte2.cat_id に対する type_cte type_cte2 の内部結合
)
選択
    猫ID、名前、親CID
type_cte から

+--------+------+------------+
| 猫ID | 名前 | 親CID |
+--------+------+------------+
| 4 | 衣類 | 0 |
| 5 | 婦人服 | 4 |
| 6 | メンズウェア | 4 |
| 7 | 子供服 | 4 |
+--------+------+------------+

2. 「美容」カテゴリの下にあるすべてのサブカテゴリをクエリし、カテゴリ名に親カテゴリの名前が含まれる

再帰的なtype_cteとして(
    cat_id = 12 の場合、t_category から cat_id、name、parent_cid を選択
    すべて結合
    t.cat_id、concat(type_cte2.name、'>'、t.name)、t.parent_cid を選択 
    t_category tから
        t.parent_cid = type_cte2.cat_id に対する type_cte type_cte2 の内部結合
)
選択
    猫ID、名前、親CID
type_cte から;

+--------+-------------------------+-------------+
| 猫ID | 名前 | 親CID |
+--------+-------------------------+-------------+
| 12 | 美しさ | 0 |
| 13 | 美容>スキンケア | 12 |
| 18 | 美容>メイクアップ | 12 |
| 19 | 美容>美容とボディ | 12 |
| 14 | 美容>スキンケア>化粧水 | 13 |
| 15 | 美容>スキンケア>スキンケアセット | 13 |
| 16 | 美容>スキンケア>フェイシャルマスク | 13 |
| 17 | 美容>スキンケア>ローションとクリーム | 13 |
| 35 | 美容>スキンケア>クレンジング | 13 |
| 36 | 美容>スキンケア>美容液 | 13 |
| 37 | 美容>スキンケア>アイクリーム | 13 |
| 38 | 美容>スキンケア>リップクリーム | 13 |
| 39 | 美容 > スキンケア > メイク落とし | 13 |
| 40 | 美容>スキンケア>日焼け止め | 13 |
+--------+-------------------------+-------------+

3. カテゴリのすべての親カテゴリを照会する

2 番目の質問に応じて SQL を調整するだけです。

再帰的なtype_cteとして(
    cat_id = 40 の場合、t_category から cat_id、name、parent_cid を選択
    すべて結合
    t.cat_id、concat(type_cte2.name、'>'、t.name)、t.parent_cid を選択
    t_category tから
             t.cat_id = type_cte2.parent_cid に対する type_cte type_cte2 の内部結合
)
選択
    猫ID、名前、親CID
type_cte から;

+--------+----------------+-------------+
| 猫ID | 名前 | 親CID |
+--------+----------------+-------------+
| 40 | 日焼け止め | 13 |
| 13 | 日焼け止め > スキンケア | 12 |
| 12 | 日焼け止め > スキンケア > メイクアップ | 0 |
+--------+----------------+-------------+

要約する

これで、MySQL 8.0 再帰クエリに関するこの記事は終了です。MySQL 8.0 再帰クエリに関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL 再帰クエリ ツリー テーブル子ノード、親ノードの特定の実装
  • Mysqlツリー再帰クエリの実装方法
  • MYSQLで再帰クエリを実装する方法
  • MySQLはカスタム関数を使用して親IDまたは子IDを再帰的に照会します
  • MySql8 WITH RECURSIVE 再帰クエリ親子コレクションメソッド

<<:  IE6 で CSS スタイルの div または li の背景のタイリングと境界の破損を解決する方法

>>:  要素を中央に配置するための配置方法 (Web ページ レイアウトのヒント)

推薦する

静的リソースファイルのアクセスログをフィルタリングするNginxの実装

乱雑なログ日常的に使用される Nginx は、静的リソース サーバーとリバース プロキシ サーバーの...

少なくとも7日間連続して注文を行ったユーザーに対するSQLクエリ

テーブルを作成するテーブル order(id varchar(10),date datetime,o...

Docker Compose ワンクリック ELK デプロイ方式の実装

インストールFilebeat は、より軽量でより安全なため、Logstash-Forwarder に...

React.FCとReact.Componentの使用に関する簡単な説明

目次1. React.FC<> 2. クラスxxはReact.Componentを拡張し...

React プロジェクトで eslint の Baidu スタイルを使用する詳細な説明

1. Baidu Eslint Ruleプラグインをインストールする npm i -D eslint...

MySQL 単一テーブルクエリの例の詳細な説明

1. データを準備するこのテーブルでは次の操作が実行されます 学生テーブルを作成 ( id int ...

MySQL 5.7.17 圧縮バージョンのインストールノート

この記事では、参考までにMySQL 5.7.17圧縮版のインストール手順を紹介します。具体的な内容は...

MySQL でコミットされていないトランザクションを見つけるための SQL の例の簡単な分析

以前、「MySQL でコミットされていないトランザクション情報を検索する方法」というタイトルのブログ...

MySQL実践ウィンドウ関数SQL分析クラスの生徒のテストの成績と生活費

目次1. 背景2. テーブル作成ステートメントとデータ挿入テーブルを作成するデータの挿入3. ウィン...

初心者のためのWebサイト構築入門 ③ エイリアス(CNAME)レコードとURL転送

①. エイリアス(CNAME)レコードの使用方法:前回の投稿のドメイン名解決では、A レコードの解...

Docker ネットワークの原理とカスタム ネットワークの詳細な分析

Docker はホストマシン上のブリッジを仮想化します。コンテナを作成して起動すると、各コンテナには...

Linuxでディスクをマウントする方法

仮想マシンを使用しているときに、ディスク容量が不足し、継続使用するためにディスクをマウントする必要が...

Navicat の MySQL へのリモート接続が遅い理由の詳細な説明

最終的な解決策は最後の写真にありますリモート データベース ( Linux システム) に接続したと...

Alibaba Cloud ECS サーバーの開始プロセス (初心者必読のチュートリアル)

1. Alibaba Cloudは、個人のニーズに応じて適切なクラウドサーバーを選択し、CPU、メ...

Nginx ルーティング転送とリバースプロキシロケーション構成の実装

Nginx を設定する 3 つの方法最初の方法は、位置一致部分を直接置き換える。 2 番目の pro...