概要 通常、データベース内のデータを直接表示することは望ましくないため、最後の 2 つのセクションでは、データをフィルター処理する方法を示しました。データのフィルタリングに加えて、 データを並べ替える必要がある場合もあります。たとえば、リスト内で最もコストの高い項目を知りたい場合は、金額フィールドを降順で並べ替える必要があります。若い年齢から年配の年齢までの分布を確認したい場合は、ユーザー テーブルの年齢フィールドを昇順で並べ替える必要があります。 また、データを制限する必要もあるかもしれません。例えば、1〜10、11〜20、21〜30の支払いをしたユーザーにそれぞれ異なるギフトを贈る必要があります。このとき、データ制限は非常に役立ちます。 注: 次のスクリプトでは、[] はオプションを示し、| 区切り文字はいずれか 1 つを選択できることを示します。 データの並び替え順 構文の形式は次のとおりです。 1. ソートするフィールドは order by ステートメントに従います。 2. asc と desc は並べ替えのルールを示します。asc: 昇順、desc: 降順、デフォルトは昇順 asc です。 3. 並べ替えには複数のフィールドを指定でき、複数のフィールドをカンマで区切ります。 4. 複数フィールドのソートでは、フィールドが早いほど優先順位が高くなります。以下では、cname1 が最初にソートされます。cname1 が同じ値の場合、すべてのフィールドがソートされるまで cname2 のソートが開始されます。 cname1 [asc|desc]、cname2 [asc|desc]... で tname から cname を選択します。 単一フィールドで並べ替え たとえば、売上金額は取引注文金額に応じて降順で表示されます。 mysql> t_order から * を選択します。 +---------+---------+---------+-------+ | 注文ID | アカウント | 金額 | 商品 | +---------+---------+---------+-------+ | 8 | ブランド | 52.2 | 2 | | 9 | 雌鳥 | 1752.02 | 7 | | 10 | ヘリン | 88.5 | 4 | | 11 | ソル | 1007.9 | 11 | | 12 | 一日 | 12 | 1 | | 13 | ウェン | 52.2 | 5 | | 14 | サリー | 99.71 | 9 | +---------+---------+---------+-------+ 7行セット mysql> t_order から * を選択し、金額の降順で並べ替えます。 +---------+---------+---------+-------+ | 注文ID | アカウント | 金額 | 商品 | +---------+---------+---------+-------+ | 9 | 雌鳥 | 1752.02 | 7 | | 11 | ソル | 1007.9 | 11 | | 14 | サリー | 99.71 | 9 | | 10 | ヘリン | 88.5 | 4 | | 8 | ブランド | 52.2 | 2 | | 13 | ウェン | 52.2 | 5 | | 12 | 一日 | 12 | 1 | +---------+---------+---------+-------+ 7行セット 複数のフィールドを並べ替える 複数のフィールドはカンマでソートされ、左から右に向かって優先順位が低くなります。次の図に示すように、金額が同じ場合は、購入されたアイテムの数に応じて、多いものから少ないものの順にソートされます。 mysql> select * from t_order order by amount desc,goods desc; +---------+---------+---------+-------+ | 注文ID | アカウント | 金額 | 商品 | +---------+---------+---------+-------+ | 9 | 雌鳥 | 1752.02 | 7 | | 11 | ソル | 1007.9 | 11 | | 14 | サリー | 99.71 | 9 | | 10 | ヘリン | 88.5 | 4 | | 13 | ウェン | 52.2 | 5 | | 8 | ブランド | 52.2 | 2 | | 12 | 一日 | 12 | 1 | +---------+---------+---------+-------+ 7行セット 別名で並べ替え エイリアスまたは条件付きクエリによる並べ替えの目的は、コードを簡素化し、使いやすくすることです。エイリアスは英語または中国語にすることができます。 mysql> t_order から account を ac、amount を am、goods を gd として選択します。order by am、gd desc; +-------+---------+----+ | ac | am | gd | +-------+---------+----+ | 夜 | 12 | 1 | | ウェン | 52.2 | 5 | | ブランド | 52.2 | 2 | | ヘリン | 88.5 | 4 | | サリー | 99.71 | 9 | | ソル | 1007.9 | 11 | | 雌鳥 | 1752.02 | 7 | +-------+---------+----+ 7行セット フィールドの並べ替えで関数を使用する 以下では abs 関数が使用されているため、am フィールドの降順ソートでは、-99.99 が 99.71 より上にランク付けされます。 mysql> t_order から * を選択します。 +---------+---------+---------+-------+ | 注文ID | アカウント | 金額 | 商品 | +---------+---------+---------+-------+ | 8 | ブランド | 52.2 | 2 | | 9 | 雌鳥 | 1752.02 | 7 | | 10 | ヘリン | 88.5 | 4 | | 11 | ソル | 1007.9 | 11 | | 12 | 一日 | 12 | 1 | | 13 | ウェン | 52.2 | 5 | | 14 | サリー | 99.71 | 9 | | 15 | ブランド1 | -99.99 | 5 | +---------+---------+---------+-------+ 8行セット mysql> t_order から account を ac、amount を am、goods を gd として選択します。order by abs(am) desc; +--------+---------+----+ | ac | am | gd | +--------+---------+----+ | 雌鳥 | 1752.02 | 7 | | ソル | 1007.9 | 11 | | ブランド1 | -99.99 | 5 | | サリー | 99.71 | 9 | | ヘリン | 88.5 | 4 | | ブランド | 52.2 | 2 | | ウェン | 52.2 | 5 | | 夜 | 12 | 1 | +--------+---------+----+ 8行セット Where条件と組み合わせて使用する order は where 条件の後にあり、where でフィルタリングされたデータに基づいてデータを並べ替えます。以下は、購入金額 > 80 かつ購入数量 > 5 でフィルタリングされ、価格の降順で並べ替えられたデータです。 mysql> t_order から * を選択します。 +---------+---------+---------+-------+ | 注文ID | アカウント | 金額 | 商品 | +---------+---------+---------+-------+ | 8 | ブランド | 52.2 | 2 | | 9 | 雌鳥 | 1752.02 | 7 | | 10 | ヘリン | 88.5 | 4 | | 11 | ソル | 1007.9 | 11 | | 12 | 一日 | 12 | 1 | | 13 | ウェン | 52.2 | 5 | | 14 | サリー | 99.71 | 9 | | 15 | ブランド1 | -99.99 | 5 | +---------+---------+---------+-------+ 8行セット mysql> select * from t_order where amount>80 and goods>5 order by amount desc; +---------+---------+---------+-------+ | 注文ID | アカウント | 金額 | 商品 | +---------+---------+---------+-------+ | 9 | 雌鳥 | 1752.02 | 7 | | 11 | ソル | 1007.9 | 11 | | 14 | サリー | 99.71 | 9 | +---------+---------+---------+-------+ データ制限 多くの場合、要件を満たすデータをフィルタリングした後でも、これらのデータの特定の範囲を取得する必要があります。たとえば、支払いが 1,000 を超える 1 番目から 10 番目、11 番目から 20 番目、21 番目から 30 番目のユーザーには、異なるギフトを贈りたいとします。この場合、制限操作を使用する必要があります。 Limit は、選択クエリによって返されるデータを制限するために使用され、データのランク付けやページングでよく使用されます。 構文の形式は次のとおりです。 tname limit [offset,] count から cname を選択します。 1. offset はオフセットを示し、スキップする行数を示します。省略可能で、デフォルト値は 0 で、これは 0 行をスキップすることを意味します。たとえば、limit 8 は limit 0,8 と同じです。 2. count: オフセット offset をスキップした後に取得するデータ行の数。これは count 行です。 3. limit内のoffsetとcountの値は式で表現できません。 最初のnレコードを取得する 次の図に示すように、制限 n と制限 0,n は一致しています。 mysql> t_order から * を選択します。 +---------+---------+---------+-------+ | 注文ID | アカウント | 金額 | 商品 | +---------+---------+---------+-------+ | 8 | ブランド | 52.2 | 2 | | 9 | 雌鳥 | 1752.02 | 7 | | 10 | ヘリン | 88.5 | 4 | | 11 | ソル | 1007.9 | 11 | | 12 | 一日 | 12 | 1 | | 13 | ウェン | 52.2 | 5 | | 14 | サリー | 99.71 | 9 | | 15 | ブランド1 | -99.99 | 5 | +---------+---------+---------+-------+ 8行セット mysql> t_order 制限 2 から * を選択 ; +---------+---------+---------+-------+ | 注文ID | アカウント | 金額 | 商品 | +---------+---------+---------+-------+ | 8 | ブランド | 52.2 | 2 | | 9 | 雌鳥 | 1752.02 | 7 | +---------+---------+---------+-------+ 2行セット mysql> t_order 制限 0,2 から * を選択します。 +---------+---------+---------+-------+ | 注文ID | アカウント | 金額 | 商品 | +---------+---------+---------+-------+ | 8 | ブランド | 52.2 | 2 | | 9 | 雌鳥 | 1752.02 | 7 | +---------+---------+---------+-------+ 2行セット 1つのレコードを制限する ここで、最大支払額と最小支払額の記録を取得します。まず順序条件を使用して並べ替え、次に最初のレコードを制限できます。 mysql> t_order から * を選択します。 +---------+---------+---------+-------+ | 注文ID | アカウント | 金額 | 商品 | +---------+---------+---------+-------+ | 8 | ブランド | 52.2 | 2 | | 9 | 雌鳥 | 1752.02 | 7 | | 10 | ヘリン | 88.5 | 4 | | 11 | ソル | 1007.9 | 11 | | 12 | 一日 | 12 | 1 | | 13 | ウェン | 52.2 | 5 | | 14 | サリー | 99.71 | 9 | | 15 | ブランド1 | -99.99 | 5 | +---------+---------+---------+-------+ 8行セット mysql> select * from t_order where amount>0 order by amount desc limit 1; +---------+---------+---------+-------+ | 注文ID | アカウント | 金額 | 商品 | +---------+---------+---------+-------+ | 9 | 雌鳥 | 1752.02 | 7 | +---------+---------+---------+-------+ セット内の1行 mysql> select * from t_order where amount>0 order by amount asc limit 1; +---------+---------+--------+-------+ | 注文ID | アカウント | 金額 | 商品 | +---------+---------+--------+-------+ | 12 | 一日 | 12 | 1 | +---------+---------+--------+-------+ セット内の1行 上記は、MySQL クエリのソートとページングに関する詳細です。MySQL クエリの詳細については、123WORDPRESS.COM の他の関連記事をご覧ください。 以下もご興味があるかもしれません:
|
<<: Dockerコンテナのネットワークポート設定プロセスの詳細な説明
>>: Vue の el-table は自動天井効果を実現します (固定をサポート)
この記事では、参考までに、JSでスネークゲームを書くための具体的なコードを紹介します。具体的な内容は...
リンク A のセマンティクス、ライティング スタイル、およびベスト プラクティス。私は JavaEy...
入力ボックスが小さい場合、内容を入力した後に、入力内容が拡大されたプロンプト ボックスを表示したいこ...
目次まず、スクロール バーのスタイルを変更するには、疑似要素-webkit-scrollbarを使用...
序文:場合によっては、MySQL に接続されたセッションが異常終了することが多く、エラー ログに「通...
MySQL 自体はファイルシステムに基づいて開発されましたが、ロックの存在が異なります。データベース...
目次1 コンテナクラウドとは何ですか? 2 Dockerの紹介3 dockerを使ってMySQLをイ...
目次序文困難クロスドメイン定義nginxの機能リバースプロキシ静的と動的の分離達成しようとする最終結...
Dockerでdocker search centosを使用する場合docker pull dock...
以前、プロジェクトを行う際に ECharts を使用しました。今日はそれをメモとして整理し、より多く...
Redux はシンプルな状態マネージャーです。その歴史をたどることはしません。使用法の観点から見ると...
Node.js の人気に応えて、最近、いくつかのサーバー側機能を実装するために Node.js を使...
Docker の作成Docker Compose は、複数の Docker コンテナを定義して実行す...
最近、MySQL の起動中にエラーが発生しました。エラー メッセージは次のとおりです。 エラー 20...
目次1. 前処理2. 前処理塗布方法A. 例: B. 実行計画の変更を追跡するための前処理C. スト...