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 で誤って削除したテーブル データを回復する方法 (必読)

バックアップがあれば、非常に簡単です。最新のバックアップ データを生成し、mysqlbinlog を...

HTML入力ドロップダウンメニューを実装する方法

コードをコピーコードは次のとおりです。 <html> <ヘッド> <m...

mysql の認証、起動、およびサービスの起動のための一般的なコマンド

1. 4つの起動方法: 1.mysqld MySQL サーバーを起動します: ./mysqld --...

MySQL 自動インクリメント ID 枯渇の例

ディスプレイ定義IDテーブルに定義された自動増分IDが上限に達した場合、次のIDを申請する際に得られ...

VMware15.5でcentos8.1をインストールし、物理メモリが不足する問題に対処する最も完全なチュートリアル

1. 仮想マシンの準備1. 新しい仮想マシンを作成する 2. 仮想マシンのカスタマイズを選択する 3...

LinuxソースコードからTIME_WAITの期間を分析する

目次1. はじめに2. まずLinux環境を紹介しましょう3. TIME_WAIT状態遷移図4. 継...

MySQLのテーブル構造を変更する際に知っておきたいメタデータロックの詳しい解説

序文MySQL を扱ったことがある人なら、テーブル メタデータ ロックの待機についてよく知っているは...

古い Vue プロジェクトに Vite サポートを追加する方法

1. はじめに会社のプロジェクトを引き継いで2年になります。今では毎回プロジェクトを起動するのに1分...

Linux で Oracle データベースをバックアップするためのスケジュールされたタスクの設定に関するチュートリアル

1. データベースの文字セットを確認するデータベースの文字セットは、Linux で設定された環境変数...

Linux の traceroute コマンドの使用方法の詳細な説明

Traceroute を使用すると、情報がコンピュータからインターネットの反対側のホストまでたどるパ...

Windows で IP アドレスを指定してサーバーへのリモート アクセスを設定する方法

当社には、外部ネットワークからの干渉を受けることが多いサーバーが多数あります。侵入者はポート 338...

レスポンシブレイアウトについて知っておくべきこと

1. はじめにレスポンシブ Web デザインにより、Web サイトは複数のデバイスと複数の画面に同時...

MySQL 基本チュートリアル: DML ステートメントの詳細な説明

目次DMLステートメント1. レコードを挿入する2. 記録を更新する3. シンプルなクエリレコード4...

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

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

Docker インストール Nginx チュートリアル 実装図

Nginx をインストールして試してみましょう。画像はクラスであり、コンテナはオブジェクトであること...