📜  SQL |订购者

📅  最后修改于: 2021-09-09 11:29:00             🧑  作者: 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

    在上面的输出中你可以看到,首先结果是按照年龄升序排列的。

    有多行具有相同的年龄。现在,根据 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