ホームページ  >  記事  >  データベース  >  MySQL の Order By 複数フィールドの並べ替えルールの詳細な説明

MySQL の Order By 複数フィールドの並べ替えルールの詳細な説明

小云云
小云云オリジナル
2017-12-14 11:54:254258ブラウズ

mysql order by が並べ替えに使用されるルールを知りたいですか? この記事では主に MySQL の Order By 複数フィールドのソート ルールのコード例を紹介します。必要な方はぜひ参考にしてください。

単一フィールドによる MySql の順序

次のようにテスト テーブルを作成します:


CREATE TABLE `a` ( 
 `code` varchar(255) DEFAULT NULL, 
 `name` varchar(255) DEFAULT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


INSERT into a values('中一', '我'); 
INSERT into a values('中二', '你'); 
INSERT into a values('高一', '我是'); 
INSERT into a values('高二', '我们'); 
INSERT into a values('高二', '我的');

テスト ステートメントは次のとおりです:


-- hex(): 获取16进制字节码 
select name, hex(name) from a order by name desc

結果は以下の通りです。

名前 hex(名前)
私の E68891E79A84
私は E68891E698AF
私たち E68891E4 BBAC
E68891
あなた E4BDA0

明らかに、MySQL でのソートはバイトコードに基づいて行われます。最初の単語が同じ場合は、2 番目の単語のバイトコードを比較します。以下同様です

MySql は複数フィールドで順序付けされます

比較することによってのみアイデアが得られ、比較することによってのみ進歩することができます。 したがって、最初に 1 つのフィールドの降順ソート結果をリストし、次に 2 つのフィールドの降順ソート結果を見て、分析することができます。それは理にかなっています。


-- 按照name进行降序排序 
select * from a order by name desc; 
-- 按照code进行降序排序 
select * from a order by code desc;

左が名前順、右がコード順の結果です

コード 名前
高校2年生 私の
高校1年生
2年生 私たち
2人目
2人目 あなた
コード 名前
高校2年 私たち
高校2年
高校1年 私は
2年生 あなた
2 つ目 I

結果は明白です: 単一フィールドがいつソートされ、他のフィールドが出現する順序は自然な順序です。

複数フィールドの並べ替えを見てみましょう


-- 按照code, name进行降序排序 
select * from a order by code, name desc;
結果は次のとおりです: まず最初に、qq_27837327とMjayTangに感謝します。元の記事にはこう書かれていましたSQLのソートが無効です。実際、order by code, name desc は order by code asc, name desc と同等です テスト後、order by code and name desc からの select * の並べ替え効果はまだ無効であることがわかりました。
コード 名前
2番目の I
2番目の あなた
1年生 私は
2年生です 私は

次の文を見ています


-- 按照code, name进行降序排序 
select * from a order by code desc, name desc; 
-- 该语句的效果等同于下面的语句, 其中1、2分别对应的是code、name 
select code, name from a order by 1 desc, 2 desc;

code

name コードと名前の単一フィールドの降順を比較すると、コード記述、名前記述による順序を使用すると、次のことがわかります。 , MySQL は、まずコードの降順で並べ替え、次に名前の降順で並べ替え、次に名前の降順で並べ替えます。 さらに、contat 関数を使用して複数のフィールドを連結し、並べ替えることもできます。ただし、フィールドを null にできないようにしてください。 SQL ステートメントと concat の結果を見てみましょう。
sophomore my
sophomore us
高校1年生 I am
Second 2 You
Second 1 Me


rreee

コード

名前明らかに、このテスト例から、concat(code, name) descによるorderの効果は、code desc、name descによるorderと同等です関連推奨事項:
2年生 my
2年生 私たちの
1年生高校 私は
2回目です あなた
2番目 I
MySQL Order by Statementの最適化コード詳細説明

mysqlのorder by inの文字順序(推奨)

MySQL Order By useの共有

以上がMySQL の Order By 複数フィールドの並べ替えルールの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。