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 ページ レイアウトのヒント)

推薦する

MySQLクエリで大文字と小文字を区別しない問題を解決する方法

質問最近、SSH フレームワークを使用して実用的なプロジェクトを完了していたときに、長い間悩まされて...

Vue が Ref を使用してレベル間でコンポーネントを取得する手順

VueはRefを使用してレベル間でコンポーネントインスタンスを取得します例の紹介開発プロセスでは、レ...

HTML テーブルタグチュートリアル (3): 幅と高さの属性 WIDTH、HEIGHT

デフォルトでは、テーブルの幅と高さはコンテンツに応じて自動的に調整されます。テーブルの幅と高さを手動...

CSS3 フィルター (フィルタ) ウェブページのグレーまたは黒モードのサンプルコードを実現

フロントエンドcss3 フィルターは、Web ページのグレー効果を実現できるだけでなく、ナイト モー...

デザイン理論:計画、リソース、コミュニケーションの問題について

<br />多くの中小企業ではこの問題は発生しません。中小企業はデザイナーをサポートし、...

Linux でのソース パッケージ インストールのサービス管理

目次1. ソースパッケージサービスの起動管理2. ソースパッケージサービスのセルフスタート管理3. ...

マークアップ言語 - 画像の置き換え

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...

Mysqlクエリ条件で文字列の末尾にスペースがあっても一致しない問題の詳細な説明

1. テーブル構造テーブル人id名前1あなた2あなた(スペース) 3あなた(スペース2つ) 2. ク...

MySQL btree インデックスとハッシュ インデックスの違い

MySQL では、ほとんどのインデックス (PRIMARY KEY、UNIQUE、INDEX、FUL...

MySQL タイムスタンプ比較クエリで遭遇する落とし穴と解決策

目次タイムスタンプ比較クエリで遭遇する落とし穴タイムスタンプクエリ範囲の問題タイムスタンプ比較クエリ...

Vue ルーターにパラメータを渡すときにページを更新するとパラメータが失われる問題に対処する方法

目次概要方法1: params経由でパラメータを渡す方法2: クエリを通じてパラメータを渡す方法3:...

SQL における distinct と row_number() over() の違いと使い方

1 はじめにデータベース内のデータを操作するための SQL 文を記述するときに、いくつかの不快な問題...

Tomcat で server.xml と content.xml を変更した後の自動復元の問題の解決方法

設定ファイルを server.xml と content.xml に書き込みます。サーバーを再起動す...

CentOS7.5にHarbor1.7をインストールして設定するプロセス全体

1. 必要なパッケージをダウンロードする wget -P /usr/local https://st...

HTML タグ マーキーを使用してスクロール効果を実現する簡単な方法 (必読)

ページの自動スクロール効果は JavaScript で実現できますが、今日偶然、JS 制御なしでさま...