Skip to content

SQL ORDER BY

SQL ORDER BY 子句用于对查询结果进行排序,可以按照一个或多个列进行升序或降序排列。

ORDER BY 语法

sql
SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;
  • ORDER BY:关键字,用于指定排序的列
  • column1, column2, ...:指定要排序的列名,多个列之间用逗号分隔
  • ASC:升序排序(默认值,可省略)
  • DESC:降序排序

示例

假设我们有一个名为 students 的表,包含以下数据:

idnameagegrade
1张三18高三
2李四17高二
3王五19高三
4赵六16高一
5钱七18高三

示例 1:按年龄升序排序

sql
SELECT * FROM students ORDER BY age;

结果:

idnameagegrade
4赵六16高一
2李四17高二
1张三18高三
5钱七18高三
3王五19高三

示例 2:按年龄降序排序

sql
SELECT * FROM students ORDER BY age DESC;

结果:

idnameagegrade
3王五19高三
1张三18高三
5钱七18高三
2李四17高二
4赵六16高一

示例 3:按年级升序排序,年级相同则按年龄降序排序

sql
SELECT * FROM students ORDER BY grade, age DESC;

结果:

idnameagegrade
4赵六16高一
2李四17高二
3王五19高三
1张三18高三
5钱七18高三

示例 4:按多列排序

sql
SELECT * FROM students ORDER BY grade DESC, age ASC;

结果:

idnameagegrade
1张三18高三
5钱七18高三
3王五19高三
2李四17高二
4赵六16高一

注意事项

  1. 默认排序方式:如果不指定 ASC 或 DESC,ORDER BY 默认按照 ASC(升序)排序。

  2. NULL 值的排序:在大多数数据库系统中,NULL 值会被排在最前面(升序)或最后面(降序)。

  3. 字符串排序:字符串类型的列会按照字典顺序排序。

  4. 性能考虑:对于大型表,ORDER BY 可能会影响查询性能,因为数据库需要对结果进行排序。如果可能,建议只对必要的列进行排序。

  5. 与 LIMIT 配合使用:ORDER BY 经常与 LIMIT 子句配合使用,用于获取排序后的前几行数据。

小结

SQL ORDER BY 子句是对查询结果进行排序的重要工具,通过指定排序的列和排序方式,可以按照我们的需求对数据进行排序。在实际应用中,ORDER BY 子句非常常用,特别是在需要展示有序数据的场景中。