sql 中的 ORDER BY 语句用于根据一列或多列对获取的数据进行升序或降序排序。
- 默认情况下,ORDER BY按升序对数据进行排序。
- 我们可以使用关键字 DESC 对数据进行降序排序,使用关键字 ASC 进行升序排序。
使用 ORDER BY 的所有方式的语法如下所示:
- 按一列排序:要按升序或降序排序,我们可以分别使用关键字 ASC 或 DESC。
句法:SELECT * FROM table_name ORDER BY column_name ASC|DESC table_name: name of the table. column_name: name of the column according to which the data is needed to be arranged. ASC: to sort the data in ascending order. DESC: to sort the data in descending order. | : use either ASC or DESC to sort in ascending or descending order
- 根据多列排序:要按升序或降序排序,我们可以分别使用关键字 ASC 或 DESC。要根据多列进行排序,请使用 (,)运算符分隔列名称。
句法:SELECT * FROM table_name ORDER BY column1 ASC|DESC , column2 ASC|DESC
查询:
- 按单列排序:在本例中,我们将从表Student 中获取所有数据,并根据列ROLL_NO按降序对结果进行排序。
SELECT * FROM Student ORDER BY ROLL_NO DESC;
输出:
ROLL_NO NAME ADDRESS PHONE Age 8 NIRAJ ALIPUR XXXXXXXXXX 19 7 ROHIT BALURGHAT XXXXXXXXXX 18 6 DHANRAJ BARABAJAR XXXXXXXXXX 20 5 SAPTARHI KOLKATA XXXXXXXXXX 19 4 DEEP RAMNAGAR XXXXXXXXXX 18 3 RIYANKA SILIGURI XXXXXXXXXX 20 2 PRATIK BIHAR XXXXXXXXXX 19 1 HARSH DELHI XXXXXXXXXX 18 要按升序排序,我们必须使用 ASC 代替 DESC。
- 按多列排序:在本例中,我们将从Student表中获取所有数据,然后首先根据Age列对结果进行升序排序。然后按照ROLL_NO列降序排列。
SELECT * FROM Student ORDER BY Age ASC , ROLL_NO DESC;
输出:
ROLL_NO NAME ADDRESS PHONE Age 7 ROHIT BALURGHAT XXXXXXXXXX 18 4 DEEP RAMNAGAR XXXXXXXXXX 18 1 HARSH DELHI XXXXXXXXXX 18 8 NIRAJ ALIPUR XXXXXXXXXX 19 5 SAPTARHI KOLKATA XXXXXXXXXX 19 2 PRATIK BIHAR XXXXXXXXXX 19 6 DHANRAJ BARABAJAR XXXXXXXXXX 20 3 RIYANKA SILIGURI XXXXXXXXXX 20 在上面的输出中你可以看到,首先结果是按照年龄升序排列的。
有多行具有相同的年龄。现在,根据 ROLL_NO 对该结果集进一步排序将根据 ROLL_NO 按降序对具有相同年龄的行进行排序。
- 注意: ASC 是 ORDER BY 子句的默认值。因此,如果您在 ORDER BY 子句中的列名后未指定任何内容,则默认情况下输出将按升序排序。
示例:以下查询将提供与上述类似的输出:
SELECT * FROM Student ORDER BY Age , ROLL_NO DESC;
输出:
ROLL_NO NAME ADDRESS PHONE Age 7 ROHIT BALURGHAT XXXXXXXXXX 18 4 DEEP RAMNAGAR XXXXXXXXXX 18 1 HARSH DELHI XXXXXXXXXX 18 8 NIRAJ ALIPUR XXXXXXXXXX 19 5 SAPTARHI KOLKATA XXXXXXXXXX 19 2 PRATIK BIHAR XXXXXXXXXX 19 6 DHANRAJ BARABAJAR XXXXXXXXXX 20 3 RIYANKA SILIGURI XXXXXXXXXX 20