📜  SQL |订购

📅  最后修改于: 2021-05-20 06:33:52             🧑  作者: Mango

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
    

2016-12-19 12-53-29的屏幕截图

查询:

  • 根据单列进行排序:在本示例中,我们将从表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