データをクエリするときに、ソート操作が使用されない場合、デフォルトでは、SQL はタプルが追加された順序でクエリ結果を並べ替えます。
SQL で並べ替え操作を実行するには、キーワード ORDER BY... を使用できます。このキーワードの後に、昇順 (小さいものから大きいものへ) を示すキーワード ASC (昇順) を追加し、降順 (大きいものから小さいものへ) を示すキーワード DESC (降順) を追加できます。
昇順または降順を示すために ORDER BY... キーワードの後に ASC または DESC が追加されていない場合、SQL はデフォルトで ASC 昇順になります。次のコードに示すように:
SELECT employee_id, last_name, salary FROM employees ORDER BY salary;
クエリ結果:
##[例 1] 従業員テーブルemployees## をクエリします。 # 従業員の employee_id
、last_name
、salary
、および Department_id
の情報。そして、salary
で最大値から最小値 (降順) に並べ替えます。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:sql;">SELECT employee_id, last_name, salary
FROM employees
ORDER BY salary DESC;</pre><div class="contentsignin">ログイン後にコピー</div></div>
クエリ結果:
2. 列の別名を使用して並べ替える
など) を計算する必要がある場合や、一部のフィールド名が非常に長すぎる場合があるため、短いエイリアスを使用するとプログラミングの効率が向上します。次の例に示すように: [例] 従業員テーブル # の従業員の
、last_name
、月給 salary# をクエリします。 ##従業員
##と年収annual_salary
の情報。そして、annual_salary
で最大値から最小値 (降順) に並べ替えられます。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:sql;">SELECT employee_id, last_name, salary,
salary * (1 + IFNULL(commission_pct, 0) * 12) AS "annual_salary"
FROM employees
ORDER BY annual_salary DESC;</pre><div class="contentsignin">ログイン後にコピー</div></div>
クエリ結果:
形式要件、
WHERE の後に宣言する必要があります。 列の別名は
では使用できません。 **WHERE
で列の別名を使用すると、SQL はエラーを報告します。では、なぜ MySQL の列エイリアスを WHERE
で使用できないのでしょうか?理由は以下のとおりです。 【原因】
SELECT employee_id, last_name, department_id FROM employees WHERE department_id IN(50, 60, 70) ORDER BY department_id DESC;
SQL において、クエリ文の実行順序が上記のコードに従っていません。上から順に1行目から1行目までの4行です。代わりに、最初に行 2 FROM... を実行し、最初にクエリ対象のテーブルを見つけます。
3 行目 WHERE... を実行して、条件を満たすタプルをフィルタリングします。
次に、行 1 SELECT... を実行して、クエリするフィールドを表示します。列エイリアスはこのステップでのみ生成されるため、それが提供する WHERE ステートメントは前のステップでは使用できません。ただし、ORDER BY の次のステップでは使用できます。
最後に、4 行目は ORDER BY... で、特定の列でソートされています。現時点では、並べ替えに列のエイリアスを使用できます。
クエリ結果:
実際には、並べ替えが必要になる場合があります。 1 つのフィールドごとに、次に別のフィールドごとに。 SQL では、二次ソートを使用してこれを実現できます。使用例については、次の例を参照してください。
employee_id
、名前last_name をクエリします。
、月給 salary
、部門 ID Department_id
。そして、まず部門 ID Department_id
で降順に並べ替え、次に salary
で大きいものから小さいもの (降順) に並べ替えます。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:sql;">SELECT employee_id, last_name, salary, department_id
FROM employees
ORDER BY department_id DESC, salary DESC;</pre><div class="contentsignin">ログイン後にコピー</div></div> クエリ結果: <code>
## など。
ORDER BYの後にカンマを追加すると、レベル 3 とレベル 4 を実現できます&hellip ;選別。
以上がMySQL でデータを並べ替える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。