ホームページ >データベース >mysql チュートリアル >MySQL のあまり知られていないソート方法

MySQL のあまり知られていないソート方法

coldplay.xixi
coldplay.xixi転載
2021-02-09 10:01:202667ブラウズ

<img src="https://img.php.cn/upload/article/202102/09/2021020910000799574.jpg" alt="MySQL のあまり知られていないソート方法" >

無料学習の推奨事項: mysql ビデオ チュートリアル

#ORDER BY フィールド名の昇順/降順

, この並べ替えステートメントを知っている友人はいると思いますが、特殊な並べ替えが発生した場合、フィールド名だけを使用するだけではニーズを満たすことができません。私が経験したいくつかの並べ替え方法を紹介します:

1. 準備作業

より良いデモンストレーションと理解を得るために、まず生徒表を準備し、番号を追加し、いくつかの部分を挿入します。図に示すように、データを名前と成績の 3 つのフィールドに入力します:


MySQL のあまり知られていないソート方法

2. 条件付き並べ替え

要件 1: 成績が高いものから順に並べ替えます。

の低い順に並べ替えるのは、路上で野菜を売っているおばちゃんがやってくれますが、
ORDER BY ExamScore DESC

(下の左図のように) を使うと簡単です。 要件 2: スコアは高いものから低いものにソートされ、スコアを入力していないものが最初にランク付けされます。

カスタマー エクスペリエンスが最も重要です。スコアを考慮すると、この要件はまったく正常です。この並べ替えを実現するには、上記のステートメントは実装できないため、条件付き並べ替えを使用する必要があります。まずスコアが空かどうかを判断し、最大値を割り当ててから、
ORDER BY IF(examScore IS NULL, など) で並べ替えます。 101,examScore ) DESC

も簡単に実装できます (右下の図を参照)。

#要件要件 1要件 2ステートメントORDER BY ExamScore DESCORDER BY IF(examScore IS NULL,101,examScore) DESCステートメント 1: ORDER BY FIELD(studentName,'李思','张三') DESC, ExamScore DESC;
#########################効果########################

3. カスタム並べ替え

顧客は神のようなものであり、顧客が高度な要求をすることは珍しくありません。他の生徒は成績に応じて 1 位になる必要があります。高い順に並べ替えます。この場合、カスタム ソートを使用する必要がありますが、MySQL 独自の FIELD 関数 (対応する文字列のインデックスを返す) がこれを実現するのに役立ちます。
ORDER BY FIELD(studentName,'Zhang San','Li Si') ASC, ExamScore DESC; MySQL のあまり知られていないソート方法上記のステートメントの結果は次のとおりです。ここでは張三と李斯を最後に配置しましたが(下図左)、張三と李斯を先頭に配置して降順に並べ替えるのが自然です。 MySQL のあまり知られていないソート方法ステートメント 2:
結果はまさに次のとおりですあなたは(次のような)右の写真が必要です)。

#ステートメント

#ステートメント 1

ステートメント 2

効果


後で、FIND_IN_SET 関数も実装でき、1 を使用してテストできることがわかりました。 100 万個のデータ。FIND_IN_SET のパフォーマンスが向上します。 ##4. 中国語ピンインの最初の文字で並べ替えますORDER BY フィールド ASCORDER BY フィールド ASC
ORDER BY FIND_IN_SET(studentName,'李思,张三') DESC, ExamScore DESC;
一部の友人は、漢字の並べ替えに通常の を直接使用し、簡単に実行できることに驚いています。 MySQL のあまり知られていないソート方法 実際、ユーザーが GBK 文字セットを使用してテーブル フィールドを作成する場合、 を直接使用して問題を解決できます。文字化けを防ぐために utf8 文字セットを使用するユーザーもいます。単純な並べ替えステートメントは役に立ちません (下の左の図に示すように) が、並べ替えの際にフィールドを GBK に変換しても問題ありません (下の右の図に示すように)。 MySQL のあまり知られていないソート方法
ステートメント

ORDER BY studentsName ASC

ORDER BY CONVERT(studentName USING GBK) ASC

#効果


##5. 気に入ったと思いますMySQL リモート接続エラー 1130 の解決策MySQL 構成のマスター/スレーブ同期バックアップSQL インジェクションを防ぐためにフィルターを使用する(ビデオ)
関連する無料学習の推奨事項: MySQL のあまり知られていないソート方法 mysql データベースMySQL のあまり知られていないソート方法

以上がMySQL のあまり知られていないソート方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。