Wenn beim Abfragen von Daten keine Sortieroperation verwendet wird, ordnet SQL die Abfrageergebnisse standardmäßig in der Reihenfolge an, in der Tupel hinzugefügt werden.
Um Sortiervorgänge in SQL durchzuführen, können Sie das Schlüsselwort ORDER BY… verwenden. Nach diesem Schlüsselwort können Sie das Schlüsselwort ASC (ascend) hinzufügen, um die aufsteigende Reihenfolge (von klein nach groß) anzugeben, und DESC (descend), um die absteigende Reihenfolge (von groß nach klein) anzugeben.
Wenn ASC oder DESC nach dem Schlüsselwort ORDER BY... nicht hinzugefügt wird, um die aufsteigende oder absteigende Reihenfolge anzugeben, verwendet SQL standardmäßig die aufsteigende ASC-Reihenfolge. Wie im folgenden Code gezeigt:
SELECT employee_id, last_name, salary FROM employees ORDER BY salary;
Abfrageergebnisse:
[Beispiel 1] Fragen Sie employee_id
und last_name von Mitarbeitern in der Mitarbeitertabelle <code>employees
, salary
und department_id
Informationen. Und sortieren Sie nach Gehalt
vom größten zum kleinsten (absteigende Reihenfolge). employees
中的员工的 employee_id
、last_name
、salary
和 department_id
信息。并按 salary
从大到小 (降序) 进行排列。
SELECT employee_id, last_name, salary FROM employees ORDER BY salary DESC;
查询结果:
在SQL中,可以使用字段 (列) 的别名来进行排序。因为有时我们需要计算表中没有的字段 (如年薪 annual_salary
) ,或者有些字段名字实在是太长了,使用简短的别名可以提高我们编程的效率。如下例子所示:
【例子】查询员工表 employees
中的员工的 employee_id
、last_name
、月薪 salary
和 年薪 annual_salary
信息。并按 annual_salary
从大到小 (降序) 进行排列。
SELECT employee_id, last_name, salary, salary * (1 + IFNULL(commission_pct, 0) * 12) AS "annual_salary" FROM employees ORDER BY annual_salary DESC;
查询结果:
【注意】
格式要求,WHERE
必须声明在 FROM
后。
列的别名只能在 ORDER BY...
中使用,不能在 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行到第4行从上往下的顺序。而是首先执行第2行 FROM... ,先去找要查询的表。
再执行第3行 WHERE... ,去筛选符合条件的元组。
然后执行第1行 SELECT... ,显示你要查询的字段。由于在这一步才会生成列的别名,因此无法在上一步中使用它提供的 WHERE 语句。但是可以提供给下一步的 ORDER BY 来使用。
最后才是第4行 ORDER BY... ,按某列排序。这个时候可以使用列的别名来进行排序。
查询结果:
在实际生活中,有时候我们需要在按照一个字段排序后再按照另一个字段排序。在SQL中我们可以使用二级排序来实现。使用方法请看下面例子:
【例子1】查询员工表 employees
中的员工的员工ID employee_id
、名字 last_name
、月薪 salary
和部门ID department_id
。并先按部门ID department_id
降序排列,再按 salary
从大到小 (降序) 进行排列。
SELECT employee_id, last_name, salary, department_id FROM employees ORDER BY department_id DESC, salary DESC;
查询结果:
依次类推,可以在 ORDER BY
rrreee
annual_salary
) oder einige Feldnamen wirklich zu lang sind, kann die Verwendung kurzer Aliase die Effizienz unserer Programmierung verbessern. Wie im folgenden Beispiel gezeigt: 🎜🎜[Beispiel] Fragen Sie die employee_id
, den last_name
und das monatliche Gehalt salary
der Mitarbeiter in der Mitarbeitertabelle ab mitarbeiter
code> und Jahresgehalt annual_salary
Informationen. Und sortieren Sie nach annual_salary
vom größten zum kleinsten (absteigende Reihenfolge). 🎜rrreee🎜Abfrageergebnisse: 🎜🎜🎜 🎜 【Hinweis】🎜WHERE
muss nach FROM
deklariert werden. 🎜🎜🎜🎜Spaltenaliase können nur in ORDER BY...
verwendet werden, nicht in WHERE
. **Wenn Sie Spaltenaliase in WHERE
verwenden, meldet SQL einen Fehler. Warum können in MySQL keine Spaltenaliase in WHERE
verwendet werden? Die Gründe sind wie folgt: 🎜🎜employee_id
, den Namen last_name
und das monatliche Gehalt der Mitarbeiter in der Mitarbeitertabelle ab Mitarbeiter
Gehalt
und Abteilungs-ID department_id
. Sortieren Sie zunächst nach der Abteilungs-ID department_id
in absteigender Reihenfolge und dann nach Gehalt
von groß nach klein (absteigende Reihenfolge). 🎜rrreee🎜Abfrageergebnisse: 🎜🎜🎜 🎜 Analog dazu können Sie nach ORDER BY
ein Komma hinzufügen, um eine Sortierung auf dritter oder vierter Ebene zu erreichen. 🎜Das obige ist der detaillierte Inhalt vonSo sortieren Sie Daten in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!