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

推薦する

Vueは買い物数量を変更できるショッピングカートを実装します

この記事では、Vueを使用してショッピングカートの数量を変更する方法を紹介します。具体的な内容は次の...

React Fiber構造の作成手順

目次リアクトファイバーの作成1. 始める前に2. React.renderから始める3. 終了リアク...

Nginx コンパイル済み nginx - 新しいモジュールを追加

1. 既存のモジュールを表示する nginx の sbin ディレクトリに nginx の sbin...

MySQLトリガートリガー例の詳細な説明

目次トリガーとは何かトリガーを作成する表は次のようになります。さらにいくつかの単語を挙げます。制限と...

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

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

JavaScriptは文字の出現回数をカウントします

この記事の例では、文字の出現回数をカウントするJavaScriptの具体的なコードを参考までに共有し...

MySQLでホワイトリストアクセスを設定する方法

MySQLでホワイトリストアクセスを設定する手順1. ログイン mysql -uroot -pmys...

js での typeof の使い方を理解するための記事

目次ベース戻り値の型文字列とブール値数値とbigintシンボル未定義関数物体他のよくある質問参照エラ...

ウォーターフォールレイアウト+ダイナミックレンダリングの実装

目次典型的なウォーターフォールウェブサイトウォーターフォールフローレイアウトの原則一般的な考え方具体...

Docker を使用して静的 Web サイト アプリケーションを作成する (複数の方法)

静的ウェブサイトをホストできるサーバーは数多くあります。この記事では、nginx、apache、to...

mysql indexof関数の使用手順

以下のように表示されます。 LOCATE(部分文字列、文字列)文字列 str 内の部分文字列 sub...

vuex データの永続化のための 2 つの実装ソリューション

目次ビジネス要件:解決策 1: vuex-persistedstate解決策2: vuex-pers...

Dockerとイメージの操作方法

ミラーを探すDocker Hubのウェブサイトからイメージを検索できます。Docker Hubのウェ...

アイデアはDockerプラグインを使用してワンクリックの自動デプロイを実現します

目次環境: 1. Dockerはリモート接続アクセスを可能にするidea dockerプラグインをイ...

blockquote タグの使用に関する注意

<br />セマンティクス化は一言で説明することはできないし、まだ公式かつ厳密な定義もあ...