ASC关键字在SQL Server中的用途是什么,因为ASC是默认的?

Ran*_*nda 3 sql t-sql sql-server

CREATE TABLE #cities(city_id INT, city_name VARCHAR(100))

INSERT INTO #cities(city_id,city_name)
SELECT 5,'New york' UNION ALL
SELECT 4,'tokyo' UNION ALL
SELECT 2,'Alaska' UNION ALL
SELECT 3,'London'  UNION ALL
SELECT 1,'Banglore'  UNION ALL
SELECT 1,'New york' UNION ALL
SELECT 2,'tokyo' UNION ALL
SELECT 3,'Alaska' UNION ALL
SELECT 4,'London'  UNION ALL
SELECT 5,'Banglore'
Run Code Online (Sandbox Code Playgroud)

我写下我的查询如下:

SELECT * 
FROM #cities 
ORDER BY 2, 1 DESC

SELECT * 
FROM #cities 
ORDER BY 2 ASC, 1 DESC
Run Code Online (Sandbox Code Playgroud)

正如您可以看到两个查询给出相同的结果.

查看查询输出

在此输入图像描述

那么,ASCSQL Server中是否有特定的关键字使用?

Dhr*_*shi 7

SQL服务器以这种方式实现它,因为SQL ANSI规范明确说明了实现方式

ORDER BY子句为您的DBMS提供要排序的项目列表,以及对它们进行排序的顺序:升序(ASC,默认)或降序(DESC).

这是一个简单的例子:

SELECT column_1 FROM Table_1 ORDER BY column_1;

此SQL语句从TABLE_1检索所有COLUMN_1值,并按升序返回它们.这个SQL语句完全相同:

`SELECT   column_1 FROM Table_1 ORDER BY column_1 ASC;`
Run Code Online (Sandbox Code Playgroud)

因此,关键字在MS SQL服务器中也是ASComit-table in ORDER BY子句,因为它正确地实现了ANSI规范.

我想相信存在是为了帮助人们轻松理解他人写的查询.

另请注意,您无法在SQL Server中将默认顺序从ASC更改为DESC.

MSDN文档中所述,请不要2,1 DESC 通过语法在您的订单中使用样式.

避免在ORDER BY子句中指定整数作为选择列表中列的位置表示.例如,虽然诸如SELECT ProductID,Name FROM Production.Production ORDER BY 2之类的语句是有效的,但与指定实际列名相比,其他语句并不容易理解.此外,对选择列表的更改(例如更改列顺序或添加新列)将需要修改ORDER BY子句以避免意外结果.