背景 プロジェクトにはメニューノードのすべてのノードをチェックする要件があります。オンラインでチェックした後、ほとんどの方法はストアドプロシージャを使用します。オンライン環境ではストアドプロシージャを気軽に追加できないため、 したがって、ここでは同様の再帰メソッドを使用して、メニューのすべての子ノードを照会します。 準備する メニュー テーブルを作成します。 テーブル `menu` を作成 ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'メニューID', `parent_id` int(11) デフォルト NULL コメント '親ノードID', `menu_name` varchar(128) デフォルト NULL コメント 'メニュー名', `menu_url` varchar(128) DEFAULT '' COMMENT 'メニューパス', `status` tinyint(3) デフォルト '1' コメント 'メニューステータス 1-有効; 0-無効', 主キー (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=12212 デフォルト CHARSET=utf8; データを挿入: `menu` に値 ('0'、null、'Menu0'、' '、'1') を挿入します。 `menu` に VALUES ('1', '0', 'メニュー 1', '', '1') を挿入します。 `menu` に VALUES ('11', '1', 'メニュー 11', '', '1') を挿入します。 `menu` に VALUES ('12', '1', 'メニュー 12', '', '1') を挿入します。 `menu` に VALUES ('13', '1', 'メニュー 13', '', '1') を挿入します。 `menu` に VALUES ('111', '11', 'Menu 111', '', '1') を挿入します。 `menu` に VALUES ('121', '12', 'Menu 121', '', '1') を挿入します。 `menu` に VALUES ('122', '12', 'Menu 122', '', '1') を挿入します。 `menu` に VALUES ('1221', '122', 'Menu 1221', '', '1') を挿入します。 `menu` に VALUES ('1222', '122', 'Menu 1222', '', '1') を挿入します。 `menu` に VALUES ('12211', '1222', 'Menu 12211', '', '1') を挿入します。 結果のディレクトリ構造は以下のようになります。 クエリ まずSQL文を投稿します: たとえば、メニュー ノード 12 のすべての子ノードをクエリする場合、クエリ結果は次のようになります。 分析する まず、fromの後のステートメントを分析し、parent_idとidでソートし、クエリするメニューノードを変数として使用します。fromの後の結果は 次に、if (express1, express2, express3) 条件文を見てみましょう。if 文は三項演算子に似ています。exprss1 が true の場合は express2 が実行され、そうでない場合は express3 が実行されます。 FIND_IN_SET(str,strlist)、strは照会する文字列、strlistフィールド名パラメータは(1,2,6,8)のように「,」で区切られ、フィールド(strlist)に(str)を含む結果を照会し、結果をnullまたはレコードとして返します。 parent_id が @pid にある場合は、parent_id を @pid に追加し、行ごとに実行します。実行プロセスを次の表に示します。 このとき表示されるIDはメニューID12の子ノードIDすべてである。 これで、メニュー ノードのすべての子ノードに対する mysql 再帰検索に関するこの記事は終了です。メニュー ノードに対する mysql 再帰検索に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
目次1. はじめに2. 原則III. 実践3.1 インデックスプッシュダウンを使用しない3.2 イン...
目次1. Vueの概要Vue公式サイトMVVM アーキテクチャ パターンVue の紹介2. Vueを...
目次序文配列.プロトタイプ.includes文法パラメータ戻り値例配列プロトタイプの削減文法パラメー...
目次DockerバージョンCentOS に Docker エンジンをインストールするシステム要件古い...
この記事では、Linux 環境の Apache で https サービスを有効にする方法について説明...
MySQL のフィルタリングのタイミングは、集計関数で使用される where 条件と having ...
導入この記事では、Ubuntu 18.04 デスクトップ システムでディスクを目的のディレクトリにマ...
問題の説明MySQL 起動エラー メッセージは次のとおりです。 mysqld を起動します (sys...
この記事は主に、docker デプロイメント springboot プロジェクトのサンプル分析を紹介...
React 16の内容です。最新技術ではありませんが、ドキュメントで調べるまであまり話題に上がらなか...
純粋な HTML + CSS を使ってドラえもんの絵を描くなど、CSS 描画に関する記事をよく見かけ...
著者が MySQL を使用してユーザーを追加していたところ、ユーザー名が間違って記述されていることに...
Dockerデーモンのアクセラレータを構成する設定ファイルから Docker を起動し、/etc/d...
よくある質問easyswoole を初めて使用する場合は、次のような問題に遭遇することがよくあります...
まずは違いについて話しましょう最後に、書き換えられたルールは、次の場所と一致させるために書き換えられ...