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 在上面的输出中,您可以看到首先根据Age将结果按升序排序。
有多个具有相同年龄的行。现在,根据ROLL_NO进一步对该结果集进行排序,将根据ROLL_NO降序对具有相同Age的行进行排序。
- 注意: 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