ホームページ >データベース >mysql チュートリアル >MySQL のあまり知られていないソート方法
<img src="https://img.php.cn/upload/article/202102/09/2021020910000799574.jpg" alt="MySQL のあまり知られていないソート方法" >
#ORDER BY フィールド名の昇順/降順無料学習の推奨事項: mysql ビデオ チュートリアル
, この並べ替えステートメントを知っている友人はいると思いますが、特殊な並べ替えが発生した場合、フィールド名だけを使用するだけではニーズを満たすことができません。私が経験したいくつかの並べ替え方法を紹介します:
より良いデモンストレーションと理解を得るために、まず生徒表を準備し、番号を追加し、いくつかの部分を挿入します。図に示すように、データを名前と成績の 3 つのフィールドに入力します:
要件 1: 成績が高いものから順に並べ替えます。
(下の左図のように) を使うと簡単です。 要件 2: スコアは高いものから低いものにソートされ、スコアを入力していないものが最初にランク付けされます。
も簡単に実装できます (右下の図を参照)。
要件 2 | ||
---|---|---|
ORDER BY IF(examScore IS NULL,101,examScore) DESC | ||
#########################効果######################## |
3. カスタム並べ替え |
顧客は神のようなものであり、顧客が高度な要求をすることは珍しくありません。他の生徒は成績に応じて 1 位になる必要があります。高い順に並べ替えます。この場合、カスタム ソートを使用する必要がありますが、MySQL 独自の FIELD 関数 (対応する文字列のインデックスを返す) がこれを実現するのに役立ちます。 |
ORDER BY FIELD(studentName,'Zhang San','Li Si') ASC, ExamScore DESC; | 上記のステートメントの結果は次のとおりです。ここでは張三と李斯を最後に配置しましたが(下図左)、張三と李斯を先頭に配置して降順に並べ替えるのが自然です。 | ステートメント 2: | ORDER BY FIELD(studentName,'李思','张三') DESC, ExamScore DESC;
#ステートメント #ステートメント 1
ステートメント 2
効果
後で、FIND_IN_SET 関数も実装でき、1 を使用してテストできることがわかりました。 100 万個のデータ。FIND_IN_SET のパフォーマンスが向上します。 | ORDER BY FIND_IN_SET(studentName,'李思,张三') DESC, ExamScore DESC; | |
---|---|---|
一部の友人は、漢字の並べ替えに通常の | ORDER BY フィールド ASCを直接使用し、簡単に実行できることに驚いています。 実際、ユーザーが GBK 文字セットを使用してテーブル フィールドを作成する場合、 | ORDER BY フィールド ASCを直接使用して問題を解決できます。文字化けを防ぐために utf8 文字セットを使用するユーザーもいます。単純な並べ替えステートメントは役に立ちません (下の左の図に示すように) が、並べ替えの際にフィールドを GBK に変換しても問題ありません (下の右の図に示すように)。 |
ORDER BY CONVERT(studentName USING GBK) ASC
#効果
MySQL リモート接続エラー 1130 の解決策 | MySQL 構成のマスター/スレーブ同期バックアップ | |
---|---|---|
関連する無料学習の推奨事項: | mysql データベース |
以上がMySQL のあまり知られていないソート方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。