背景 プロジェクトにはメニューノードのすべてのノードをチェックする要件があります。オンラインでチェックした後、ほとんどの方法はストアドプロシージャを使用します。オンライン環境ではストアドプロシージャを気軽に追加できないため、 したがって、ここでは同様の再帰メソッドを使用して、メニューのすべての子ノードを照会します。 準備する メニュー テーブルを作成します。 テーブル `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 を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
mysql使用中に接続数が超過していることが判明しました~~~~ [root@linux-node...
目次1. はじめに1. 基本レイアウト2. 写真を自動的に切り替える3. コンテンツを追加する4. ...
最近、Apache を nginx に変更しました。TP プロジェクトを実行に移すと、404 エラー...
複数のTomcatをインストールする場合は、システムにJDKがインストールされている必要があり、 T...
この記事では、アコーディオン効果を実現するためのjsの具体的なコードを参考までに共有します。具体的な...
HTMLとは何ですか? HTML は Web ページを記述するために使用される言語です。 •HTML...
MySQL では、datetime 型は通常、時間を保存するために使用されますが、現在では多くのシス...
1 問題の説明: 1.1 Windows 10 に VMware を初めてインストールする場合、また...
背景: 開発プロセスでは、現在の月、現在の日、現在の時間、今後数日など、時間を判断条件としてデータを...
電話Amap API を呼び出す方法は? Amap が https://lbs.amap.com/a...
Linux で履歴レコードを表示し、タイムスタンプを追加するためのヒントbashに詳しい人なら、hi...
注意: docker-compose.yml ファイルを書き込むときは、すべてのコロン (:) とダ...
最近 Django を導入しましたが、MySQL を手動でインストールしたくなかったので、Docke...
現在の Linux システムが VMware にインストールされているかどうかを確認する方法を教えて...
WindowsでMySQLデータベースのマスターとスレーブを構成する詳細なプロセスは次のとおりです。...