現時点では、データベースのフィールドは次のとおりです。リージョンは列を表し、cid は列 ID、カテゴリは列名です。 、chain は関係ツリー、rank は列の並べ替えです
mysql> select * from mc_category;+-----+----------+--------------+------+| cid | category | chain | rank |+-----+----------+--------------+------+| 1 | 国内 | 0_1 | 2 || 2 | 国外 | 0_2 | 1 || 3 | 华北 | 0_1_3 | 2 || 4 | 东北 | 0_1_4 | 1 || 5 | 西部 | 0_1_5 | 3 || 6 | 河南 | 0_1_3_6 | 1 || 7 | 郑州 | 0_1_3_6_7 | 2 || 8 | 巩义 | 0_1_3_6_7_8 | 1 || 9 | 洛阳 | 0_1_3_6_9 | 1 || 10 | 偃师 | 0_1_3_6_9_10 | 1 || 11 | 辽宁 | 0_1_4 | 3 || 12 | 吉林 | 0_1_4_11_12 | 1 || 13 | 上街 | 0_1_3_6_7_13 | 2 |+-----+----------+--------------+------+
select category,chain from mc_category group by chain order by chain;
mc_category からカテゴリ、チェーンを選択し、チェーン順、ランク順にグループ化します
select category,chain from mc_category group bychain order bychain,rank
これは機能しません。これは、チェーンが同じ場合にのみランクによって並べ替えることができますが、今はチェーンの値が異なるため、並べ替えられていますランクによるものは機能しません。
どうすれば私たちは仲間と呼べるのでしょうか?チェーンも同じですか?
テストを容易にするために、テーブルの作成と挿入のステートメントを投稿することをお勧めします。 。
実際、テーブル内のデータを
insert into mc_category (cid,category,chain,rank) values (1, '国内', '01', 2),(2, '国外', '02', 1),(3, '华北', '0103', 2),(4, '东北', '0104', 1),(5, '西部', '0105', 3),(6, '河南', '010306', 1),(7, '郑州', '01030607', 2),(8, '巩义', '0103060708', 1),(9, '洛阳', '01030609', 1),(10, '偃师', '0103060910', 1),(11, '辽宁', '010410', 3),(12, '吉林', '01041112', 1),(13, '上街', '0103060713', 2)
写真にアクセスするだけです
、私は写真を許可しないバイドゥを軽蔑します
尚潔が公儀の前にいるのは、順位が下がっているからです
では、洛陽と燕石が鄭州の前にいる理由は何でしょうか?
チェーンの長さから、鄭州と洛陽の列が同じレベルにあることがわかります。要件に従って、同じレベルの列はランクに従って並べ替える必要があるため、洛陽が前にある必要があります。鄭州。順序を調整した後、ディレクトリ ツリーの親子関係を混乱させることはできません。Yanshi は洛陽のサブ列であるため、Yanshi は洛陽に従う必要があります。したがって、洛陽と燕石は鄭州よりも先にあるはずです。
この投稿の最終編集者は、xuzuning 2012-09-06 10:59:59 です
前にも言いましたが、「尚潔がゴンイーの前にいるのは、順位が高いからです」それから、順位の降順では、鄭州は洛陽の前にあるはずです
select category,chain,rank from mc_category order by rpad(left(chain, 2),$n,'0') desc,rpad(left(chain, 4),$n,'0') asc,rpad(left(chain, 6),$n,'0') asc,length(chain)>6,rank desc
国外 02 1国内 01 2华北 0103 2河南 010306 1郑州 01030607 2上街 0103060713 2巩义 0103060708 1洛阳 01030609 1偃师 0103060910 1东北 0104 1辽宁 010410 3吉林 01041112 1西部 0105 3
しつこい誤解
質問者の要件は、同じ親カテゴリのサブカテゴリをランク順にソートすることです
これは、mysql だけでは実行できません。分類ツリーを読み取って処理するプログラムを使用する必要があります。
この種の分類木にはキャッシュを使用することをお勧めします
なぜ間違って理解したのでしょうか? 0 类 父親カテゴリー 01030607
鄭州 01030607 2
0103060713 2
恭儀 0103060708 1
父親カテゴリー 010306
河南省 010306 1
鄭州 01 030607 01030609
父親機密 01 国内 01 2
中国北部 0103 2
東北 0104 1
主 主 主主主主主主主主主主主0 0 the postmoier vbker] この問題に対する解決策はありますか?教えていただければ幸いです〜