Mệnh đề SELECT – ORDER BY (Transact-SQL)

Bạn đang xem: đặt hàng theo máy chủ sql

SELECT – ORDER BY mệnh đề (Transact-SQL)

Trong bài viết này

Áp dụng cho: SQL Server (tất cả các phiên bản được hỗ trợ) Cơ sở dữ liệu Azure SQL Azure SQL Managed Instance Azure Synapse Analytics Hệ thống phân tích nền tảng (PDW)

Sắp xếp dữ liệu được trả về bởi một truy vấn trong SQL Server. Sử dụng điều khoản này để:

  • Sắp xếp tập hợp kết quả của một truy vấn theo danh sách cột được chỉ định và, theo tùy chọn, giới hạn các hàng được trả về trong một phạm vi được chỉ định. Thứ tự các hàng được trả về trong tập kết quả không được đảm bảo trừ khi mệnh đề ORDER BY được chỉ định.

  • Xác định thứ tự áp dụng các giá trị của chức năng xếp hạng cho tập kết quả.

Quy ước về cú pháp Transact-SQL

Lưu ý

ORDER BY không được hỗ trợ trong câu lệnh CHỌN / VÀO hoặc TẠO BẢNG NHƯ CHỌN (CTAS) trong Azure Synapse Analytics hoặc Hệ thống nền tảng Analytics (PDW).

Cú pháp

  - Cú pháp cho SQL Server và Azure SQL Database
  
ĐẶT HÀNG THEO order_by_expression
    [COLLATE collation_name]
    [ASC | MÔ TẢ]
    [ ,...N ]
[& lt; offset_fetch & gt; ]
  
& lt; offset_fetch & gt; :: =
{
    OFFSET {integer_constant | offset_row_count_expression} {ROW | ROWS}
    [
      TÌM KIẾM {ĐẦU TIÊN | NEXT} {integer_constant | fetch_row_count_expression} {ROW | CHỈ ROWS}
    ]
}
 
  - Cú pháp cho Azure Synapse Analytics và Kho dữ liệu song song
  
[ ĐẶT BỞI
    {
    order_by_expression
    [ASC | MÔ TẢ]
    } [ ,...N ]
]
 

Lưu ý

Để xem cú pháp Transact-SQL cho SQL Server 2014 trở về trước, hãy xem Tài liệu về các phiên bản trước .

Đối số

order_by_expression
Chỉ định một cột hoặc biểu thức để sắp xếp tập hợp kết quả truy vấn. Cột sắp xếp có thể được chỉ định dưới dạng tên hoặc bí danh cột hoặc một số nguyên không âm đại diện cho vị trí của cột trong danh sách chọn.

Có thể chỉ định nhiều cột sắp xếp. Tên cột phải là duy nhất. Trình tự của các cột sắp xếp trong mệnh đề ORDER BY xác định tổ chức của tập kết quả đã sắp xếp. Tức là, tập hợp kết quả được sắp xếp theo cột đầu tiên và sau đó danh sách có thứ tự đó được sắp xếp theo cột thứ hai, v.v.

Tên cột được tham chiếu trong mệnh đề ORDER BY phải tương ứng với một cột hoặc bí danh cột trong danh sách lựa chọn hoặc với một cột được xác định trong bảng được chỉ định trong mệnh đề FROM mà không có bất kỳ sự mơ hồ nào. Nếu mệnh đề ORDER BY tham chiếu đến bí danh cột từ danh sách chọn, bí danh cột phải được sử dụng độc lập và không phải là một phần của một số biểu thức trong mệnh đề ORDER BY, ví dụ:

  CHỌN SCHEMA_NAME (schema_id) AS SchemaName FROM sys.objects
ĐẶT HÀNG BẰNG SchemaName; -- Chính xác
CHỌN SCHEMA_NAME (schema_id) NHƯ Tên lược đồ TỪ sys.objects
ĐẶT HÀNG BẰNG SchemaName + ''; -- Sai lầm
 

COLLATE collation_name
Chỉ định rằng thao tác ORDER BY phải được thực hiện theo đối chiếu được chỉ định trong collation_name, chứ không phải theo đối chiếu của cột như được xác định trong bảng hoặc dạng xem. collation_name có thể là tên đối chiếu Windows hoặc tên đối chiếu SQL. Để biết thêm thông tin, hãy xem Đối chiếu và Hỗ trợ Unicode . COLLATE chỉ áp dụng cho các cột thuộc loại char , varchar , nchar nvarchar .

ASC | MÔ TẢ
Chỉ định rằng các giá trị trong cột được chỉ định phải được sắp xếp theo thứ tự tăng dần hoặc giảm dần. ASC sắp xếp từ giá trị thấp nhất đến giá trị cao nhất. DESC sắp xếp từ giá trị cao nhất đến giá trị thấp nhất. ASC là thứ tự sắp xếp mặc định. Giá trị rỗng được coi là giá trị thấp nhất có thể.

OFFSET {integer_constant | offset_row_count_expression} {ROW | ROWS}
Chỉ định số hàng cần bỏ qua trước khi nó bắt đầu trả về các hàng từ biểu thức truy vấn. Giá trị có thể là một hằng số nguyên hoặc một biểu thức lớn hơn hoặc bằng không.

Áp dụng cho : SQL Server 2012 (11.x) trở lên và Azure SQL Database.s

offset_row_count_expression có thể là một biến, tham số hoặc truy vấn con vô hướng hằng số. Khi một truy vấn con được sử dụng, nó không thể tham chiếu đến bất kỳ cột nào được xác định trong phạm vi truy vấn bên ngoài. Nghĩa là, nó không thể tương quan với truy vấn bên ngoài.

ROW và ROWS là từ đồng nghĩa và được cung cấp để tương thích với ANSI.

Trong các kế hoạch thực thi truy vấn, giá trị đếm hàng bù trừ được hiển thị trong thuộc tính Offset của toán tử truy vấn TOP.

TÌM KIẾM {ĐẦU TIÊN | NEXT} {integer_constant | fetch_row_count_expression} {ROW | CHỈ ROWS}
Chỉ định số hàng trả về sau khi mệnh đề OFFSET đã được xử lý. Giá trị có thể là một hằng số nguyên hoặc một biểu thức lớn hơn hoặc bằng một.

Áp dụng cho : SQL Server 2012 (11.x) trở lên và Cơ sở dữ liệu Azure SQL.

fetch_row_count_expression có thể là một biến, tham số hoặc truy vấn con vô hướng hằng số. Khi một truy vấn con được sử dụng, nó không thể tham chiếu đến bất kỳ cột nào được xác định trong phạm vi truy vấn bên ngoài. Nghĩa là, nó không thể tương quan với truy vấn bên ngoài.

FIRST và NEXT là từ đồng nghĩa và được cung cấp để tương thích với ANSI.

ROW và ROWS là từ đồng nghĩa và được cung cấp để tương thích với ANSI.

Trong các kế hoạch thực thi truy vấn, giá trị đếm hàng bù trừ được hiển thị trong thuộc tính Hàng hoặc Trên cùng của toán tử truy vấn TOP.

Các phương pháp hay nhất

Tránh chỉ định số nguyên trong mệnh đề ORDER BY làm đại diện vị trí của các cột trong danh sách chọn. Ví dụ: mặc dù một câu lệnh như SELECT ProductID, Name FROM Production.Production ORDER BY 2 là hợp lệ, nhưng câu lệnh này không dễ hiểu đối với những người khác so với việc chỉ định tên cột thực tế. Ngoài ra, những thay đổi đối với danh sách lựa chọn, chẳng hạn như thay đổi thứ tự cột hoặc thêm cột mới, yêu cầu sửa đổi mệnh đề ORDER BY để tránh kết quả không mong muốn.

Trong câu lệnh SELECT TOP (N), luôn sử dụng mệnh đề ORDER BY. Đây là cách duy nhất để chỉ ra những hàng bị ảnh hưởng bởi TOP. Để biết thêm thông tin, hãy xem TOP (Transact-SQL) .

Khả năng tương tác

Khi được sử dụng với câu lệnh SELECT … INTO hoặc INSERT … SELECT để chèn các hàng từ một nguồn khác, mệnh đề ORDER BY không đảm bảo các hàng được chèn theo thứ tự đã chỉ định.

Sử dụng OFFSET và FETCH trong một chế độ xem không thay đổi thuộc tính cập nhật của chế độ xem.

Xem Thêm  Biến - các biến trong javascript là gì

Hạn chế và Hạn chế

Không có giới hạn về số lượng cột trong mệnh đề ORDER BY; tuy nhiên, tổng kích thước của các cột được chỉ định trong mệnh đề ORDER BY không được vượt quá 8.060 byte.

Các cột thuộc loại ntext , văn bản , hình ảnh , địa lý , hình học xml không thể được sử dụng trong mệnh đề ORDER BY.

Không thể chỉ định số nguyên hoặc hằng số khi order_by_expression xuất hiện trong một hàm xếp hạng. Để biết thêm thông tin, hãy xem Điều khoản OVER (Giao dịch-SQL) .

Nếu tên bảng được đặt bí danh trong mệnh đề FROM, thì chỉ tên bí danh mới có thể được sử dụng để đủ điều kiện cho các cột của nó trong mệnh đề ORDER BY.

Tên cột và bí danh được chỉ định trong mệnh đề ORDER BY phải được xác định trong danh sách lựa chọn nếu câu lệnh SELECT chứa một trong các mệnh đề hoặc toán tử sau:

  • Toán tử UNION

  • Toán tử EXCEPT

  • Toán tử INTERSECT

  • CHỌN DISTINCT

Ngoài ra, khi câu lệnh bao gồm toán tử UNION, EXCEPT hoặc INTERSECT, tên cột hoặc bí danh cột phải được chỉ định trong danh sách lựa chọn của truy vấn đầu tiên (bên trái).

Trong một truy vấn sử dụng toán tử UNION, EXCEPT hoặc INTERSECT, ORDER BY chỉ được phép ở cuối câu lệnh. Hạn chế này chỉ áp dụng khi bạn chỉ định UNION, EXCEPT và INTERSECT trong truy vấn cấp cao nhất chứ không phải trong truy vấn con. Xem phần Ví dụ sau đây.

Mệnh đề ORDER BY không hợp lệ trong các dạng xem, hàm nội tuyến, bảng dẫn xuất và truy vấn con, trừ khi mệnh đề TOP hoặc OFFSET và FETCH cũng được chỉ định. Khi ORDER BY được sử dụng trong các đối tượng này, mệnh đề chỉ được sử dụng để xác định các hàng được trả về bởi mệnh đề TOP hoặc mệnh đề OFFSET và FETCH. Mệnh đề ORDER BY không đảm bảo kết quả theo thứ tự khi các cấu trúc này được truy vấn, trừ khi ORDER BY cũng được chỉ định trong chính truy vấn.

OFFSET và FETCH không được hỗ trợ trong các chế độ xem đã lập chỉ mục hoặc trong một chế độ xem được xác định bằng cách sử dụng mệnh đề CHECK OPTION.

OFFSET và FETCH có thể được sử dụng trong bất kỳ truy vấn nào cho phép TOP và ORDER BY với các giới hạn sau:

  • Điều khoản OVER không hỗ trợ OFFSET và FETCH.

  • OFFSET và FETCH không thể được chỉ định trực tiếp trong các câu lệnh INSERT, UPDATE, MERGE và DELETE, nhưng có thể được chỉ định trong một truy vấn con được xác định trong các câu lệnh này. Ví dụ, trong câu lệnh INSERT INTO SELECT, có thể chỉ định OFFSET và FETCH trong câu lệnh SELECT.

  • Trong một truy vấn sử dụng toán tử UNION, EXCEPT hoặc INTERSECT, chỉ có thể chỉ định OFFSET và FETCH trong truy vấn cuối cùng chỉ định thứ tự của kết quả truy vấn.

  • TOP không thể được kết hợp với OFFSET và FETCH trong cùng một biểu thức truy vấn (trong cùng một phạm vi truy vấn).

Sử dụng OFFSET và FETCH để giới hạn các hàng được trả về

Chúng tôi khuyên bạn nên sử dụng mệnh đề OFFSET và FETCH thay vì mệnh đề TOP để triển khai giải pháp phân trang truy vấn và giới hạn số hàng được gửi đến ứng dụng khách.

Việc sử dụng OFFSET và FETCH làm giải pháp phân trang yêu cầu chạy truy vấn một lần cho mỗi “trang” dữ liệu được trả về ứng dụng khách. Ví dụ: để trả về kết quả của một truy vấn theo số gia 10 hàng, bạn phải thực hiện truy vấn một lần để trả về các hàng từ 1 đến 10 và sau đó chạy lại truy vấn để trả về các hàng từ 11 đến 20, v.v. Mỗi truy vấn là độc lập và không liên quan đến nhau theo bất kỳ cách nào. Điều này có nghĩa là, không giống như việc sử dụng con trỏ trong đó truy vấn được thực thi một lần và trạng thái được duy trì trên máy chủ, ứng dụng khách có trách nhiệm theo dõi trạng thái. Để đạt được kết quả ổn định giữa các yêu cầu truy vấn sử dụng OFFSET và FETCH, các điều kiện sau phải được đáp ứng:

  1. Dữ liệu cơ bản được sử dụng bởi truy vấn không được thay đổi. Có nghĩa là, các hàng được truy vấn chạm vào không được cập nhật hoặc tất cả các yêu cầu cho các trang từ truy vấn được thực hiện trong một giao dịch duy nhất bằng cách sử dụng ảnh chụp nhanh hoặc cách ly giao dịch có thể tuần tự hóa. Để biết thêm thông tin về các cấp độ cách ly giao dịch này, hãy xem ĐẶT MỨC ĐỘ CẠNH TRANH GIAO DỊCH (Transact-SQL) .

  2. Mệnh đề ORDER BY chứa một cột hoặc kết hợp các cột được đảm bảo là duy nhất.

Xem ví dụ “Chạy nhiều truy vấn trong một giao dịch” trong phần Ví dụ ở phần sau của chủ đề này.

Nếu các kế hoạch thực thi nhất quán là quan trọng trong giải pháp phân trang của bạn, hãy xem xét sử dụng gợi ý TỐI ƯU HÓA CHO truy vấn cho các tham số OFFSET và FETCH. Xem “Chỉ định biểu thức cho các giá trị OFFSET và FETCH” trong phần Ví dụ ở phần sau của chủ đề này. Để biết thêm thông tin về TỐI ƯU HÓA CHO, hãy xem Gợi ý truy vấn (Giao dịch-SQL) .

Ví dụ

Cú pháp cơ bản

Các ví dụ trong phần này thể hiện chức năng cơ bản của mệnh đề ORDER BY bằng cách sử dụng cú pháp bắt buộc tối thiểu.

A. Chỉ định một cột duy nhất được xác định trong danh sách chọn

Ví dụ sau sắp xếp kết quả được đặt theo cột ProductID số. Vì một thứ tự sắp xếp cụ thể không được chỉ định, nên thứ tự mặc định (thứ tự tăng dần) được sử dụng.

  SỬ DỤNG AdventureWorks2012;
ĐI
CHỌN ID Sản phẩm, Tên TỪ Sản phẩm.
NƠI Tên NHƯ 'Lock Washer%'
ĐẶT HÀNG BẰNG ProductID;
 

B. Chỉ định một cột không được xác định trong danh sách chọn

Ví dụ sau sắp xếp kết quả được đặt theo cột không có trong danh sách lựa chọn, nhưng được xác định trong bảng được chỉ định trong mệnh đề FROM.

  SỬ DỤNG AdventureWorks2012;
ĐI
CHỌN ID sản phẩm, Tên, Màu sắc
TỪ SẢN XUẤT.
ĐẶT HÀNG THEO ListPrice;
 

C. Chỉ định bí danh làm cột sắp xếp

Ví dụ sau chỉ định bí danh cột SchemaName làm cột thứ tự sắp xếp.

  SỬ DỤNG AdventureWorks2012;
ĐI
CHỌN tên, SCHEMA_NAME (schema_id) AS SchemaName
TỪ sys.objects
WHERE type = 'U'
ĐẶT HÀNG BẰNG SchemaName;
 

D. Chỉ định một biểu thức làm cột sắp xếp

Ví dụ sau sử dụng một biểu thức làm cột sắp xếp. Biểu thức được xác định bằng cách sử dụng hàm DATEPART để sắp xếp kết quả được thiết lập theo năm mà nhân viên được thuê.

  SỬ DỤNG AdventureWorks2012;
ĐI
CHỌN BusinessEntityID, JobTitle, HireDate
TỪ Nguồn nhân lực. Nhân viên
ĐẶT HÀNG BẰNG DATEPART (năm, Ngày thuê);
 

Chỉ định thứ tự sắp xếp tăng dần và giảm dần

A. Chỉ định một thứ tự giảm dần

Ví dụ sau sắp xếp kết quả được đặt bởi cột số ProductID theo thứ tự giảm dần.

 SỬ DỤNG AdventureWorks2012;
ĐI
CHỌN ID Sản phẩm, Tên TỪ Sản phẩm.
NƠI Tên NHƯ 'Lock Washer%'
ĐẶT HÀNG BẰNG ProductID DESC;
 

B. Chỉ định một thứ tự tăng dần

Ví dụ sau sắp xếp kết quả được đặt theo cột Tên theo thứ tự tăng dần. Các ký tự được sắp xếp theo thứ tự bảng chữ cái, không phải theo số. Tức là, 10 loại trước 2.

  SỬ DỤNG AdventureWorks2012;
ĐI
CHỌN ID Sản phẩm, Tên TỪ Sản phẩm.
NƠI Tên NHƯ 'Lock Washer%'
ĐẶT HÀNG THEO Tên ASC;
 

C. Chỉ định cả thứ tự tăng dần và giảm dần

Ví dụ sau đây sắp xếp kết quả theo hai cột. Đầu tiên, tập hợp kết quả truy vấn được sắp xếp theo thứ tự tăng dần bởi cột FirstName và sau đó được sắp xếp theo thứ tự giảm dần bởi cột LastName .

  SỬ DỤNG AdventureWorks2012;
ĐI
CHỌN LastName, FirstName TỪ Person.Person
ĐÂU LastName LIKE 'R%'
ĐẶT HÀNG THEO FirstName ASC, LastName DESC;
 

Chỉ định một đối chiếu

Ví dụ sau đây cho thấy cách chỉ định đối chiếu trong mệnh đề ORDER BY có thể thay đổi thứ tự trả về kết quả truy vấn. Một bảng được tạo có chứa một cột được xác định bằng cách sử dụng đối chiếu không phân biệt chữ hoa chữ thường, không phân biệt trọng âm. Các giá trị được chèn với nhiều sự khác biệt về kiểu chữ và dấu. Bởi vì đối chiếu không được chỉ định trong mệnh đề ORDER BY, truy vấn đầu tiên sử dụng đối chiếu của cột khi sắp xếp các giá trị. Trong truy vấn thứ hai, đối chiếu phân biệt chữ hoa chữ thường, phân biệt trọng âm được chỉ định trong mệnh đề ORDER BY, điều này sẽ thay đổi thứ tự các hàng được trả về.

  SỬ DỤNG tempdb;
ĐI
TẠO BẢNG # t1 (tên NVARCHAR (15) COLLATE Latin1_General_CI_AI)
ĐI
CHÈN VÀO CÁC GIÁ TRỊ # t1 (N'Sánchez '), (N'Sanchez'), (N'sánchez '), (N'sanchez');
  
- Truy vấn này sử dụng đối chiếu được chỉ định cho cột 'tên' để sắp xếp.
CHỌN tên
TỪ # t1
ĐẶT HÀNG THEO tên;
- Truy vấn này sử dụng đối chiếu được chỉ định trong mệnh đề ORDER BY để sắp xếp.
CHỌN tên
TỪ # t1
ĐẶT HÀNG THEO tên COLLATE Latin1_General_CS_AS;
 

Chỉ định một thứ tự có điều kiện

Các ví dụ sau sử dụng biểu thức CASE trong mệnh đề ORDER BY để xác định có điều kiện thứ tự sắp xếp của các hàng dựa trên giá trị cột nhất định. Trong ví dụ đầu tiên, giá trị trong cột SalariedFlag của bảng HumanResources.E Employee được đánh giá. Những nhân viên có SalariedFlag được đặt thành 1 sẽ được trả về theo thứ tự bởi BusinessEntityID theo thứ tự giảm dần. Những nhân viên có SalariedFlag được đặt thành 0 được trả về theo thứ tự bởi BusinessEntityID theo thứ tự tăng dần. Trong ví dụ thứ hai, tập hợp kết quả được sắp xếp theo cột TerritoryName khi cột CountryRegionName bằng ‘United States’ và theo CountryRegionName cho tất cả các hàng khác.

  CHỌN BusinessEntityID, SalariedFlag
TỪ Nguồn nhân lực. Nhân viên
ĐẶT HÀNG THEO TRƯỜNG HỢP Được tính lương
        , TRƯỜNG HỢP KHI SalariedFlag = 0 THÌ BusinessEntityID KẾT THÚC;
ĐI
 
  CHỌN BusinessEntityID, LastName, TerritoryName, CountryRegionName
TỪ Sales.vSalesPerson
NƠI Lãnh thổ Tên KHÔNG ĐẦY ĐỦ
ĐẶT HÀNG THEO TRƯỜNG HỢP Quốc gia Tên miền KHI 'Hoa Kỳ' THÌ Lãnh thổ Tên
         ELSE CountryRegionName END;
 

Sử dụng ORDER BY trong chức năng xếp hạng

Ví dụ sau sử dụng mệnh đề ORDER BY trong các hàm xếp hạng ROW_NUMBER, RANK, DENSE_RANK và NTILE.

  SỬ DỤNG AdventureWorks2012;
ĐI
CHỌN p.FirstName, p.LastName
    , ROW_NUMBER () HẾT (ĐẶT HÀNG THEO a.PostalCode) NHƯ "Số hàng"
    , RANK () OVER (ORDER BY a.PostalCode) NHƯ "Xếp hạng"
    , DENSE_RANK () HẾT (ĐẶT HÀNG THEO a.PostalCode) NHƯ "Xếp hạng dày đặc"
    , NTILE (4) OVER (ĐẶT HÀNG THEO a.PostalCode) NHƯ "Phần tư"
    , s.SalesYTD, a.PostalCode
TỪ Sales.SalesPerson AS s
    NGƯỜI THAM GIA INNER. NGƯỜI NHƯ p
        ON s.BusinessEntityID = p.BusinessEntityID
    THAM GIA INNER Person.Địa chỉ NHƯ a
        ON a.AddressID = p.BusinessEntityID
NƠI TerritoryID KHÔNG ĐẦY ĐỦ VÀ SalesYTD & lt; & gt; Số 0;
 

Giới hạn số hàng được trả về

Các ví dụ sau sử dụng OFFSET và FETCH để giới hạn số hàng được trả về bởi một truy vấn.

Xem Thêm  Một Số Cách Phân Biệt Mật Ong Thật Hay Giả ? Cách Nhận Biết Mật Ong Nguyên Chất Và Pha Trộn

Áp dụng cho : SQL Server 2012 (11.x) trở lên và Cơ sở dữ liệu Azure SQL.

A. Chỉ định các hằng số nguyên cho các giá trị OFFSET và FETCH

Ví dụ sau chỉ định một hằng số nguyên làm giá trị cho mệnh đề OFFSET và FETCH. Truy vấn đầu tiên trả về tất cả các hàng được sắp xếp theo cột DepartmentID . So sánh kết quả được trả về bởi truy vấn này với kết quả của hai truy vấn theo sau nó. Truy vấn tiếp theo sử dụng mệnh đề OFFSET 5 ROWS để bỏ qua 5 hàng đầu tiên và trả về tất cả các hàng còn lại. Truy vấn cuối cùng sử dụng mệnh đề OFFSET 0 ROWS để bắt đầu với hàng đầu tiên và sau đó sử dụng FETCH NEXT 10 ROWS ONLY để giới hạn các hàng được trả về 10 hàng từ tập kết quả đã sắp xếp .

  SỬ DỤNG AdventureWorks2012;
ĐI
- Trả lại tất cả các hàng được sắp xếp theo cột DepartmentID.
CHỌN ID bộ phận, Tên, Tên nhóm
TỪ HumanResources.Department
ĐẶT HÀNG THEO DANH MỤC;
  
- Bỏ qua 5 hàng đầu tiên từ tập kết quả đã sắp xếp và trả về tất cả các hàng còn lại.
CHỌN ID bộ phận, Tên, Tên nhóm
TỪ HumanResources.Department
ĐẶT HÀNG THEO DepartmentID OFFSET 5 ROWS;
  
- Bỏ qua 0 hàng và chỉ trả lại 10 hàng đầu tiên từ tập kết quả đã sắp xếp.
CHỌN ID bộ phận, Tên, Tên nhóm
TỪ HumanResources.Department
ĐẶT HÀNG THEO ID Sở
    OFFSET 0 ROWS
    CHỈ TÌM 10 CON ĐƯỜNG TIẾP THEO;
 

B. Chỉ định các biến cho các giá trị OFFSET và FETCH

Ví dụ sau khai báo các biến @RowsToSkip @FetchRows và chỉ định các biến này trong mệnh đề OFFSET và FETCH.

  SỬ DỤNG AdventureWorks2012;
ĐI
- Chỉ định các biến cho các giá trị OFFSET và FETCH
DECLARE @RowsToSkip TINYINT = 2
      , @FetchRows TINYINT = 8;
CHỌN ID bộ phận, Tên, Tên nhóm
TỪ HumanResources.Department
ĐẶT HÀNG THEO ASC của DepartmentID
    OFFSET @RowsToSkip ROWS
    CHỈ TÌM KIẾM @FetchRows ROWS TIẾP THEO;
 

C. Chỉ định biểu thức cho các giá trị OFFSET và FETCH

Ví dụ sau sử dụng biểu thức @StartingRowNumber - 1 để chỉ định giá trị OFFSET và biểu thức @EndingRowNumber - @StartingRowNumber + 1 để chỉ định giá trị FETCH. Ngoài ra, gợi ý truy vấn, TỐI ƯU HÓA CHO, được chỉ định. Gợi ý này có thể được sử dụng để cung cấp một giá trị cụ thể cho một biến cục bộ khi truy vấn được biên dịch và tối ưu hóa. Giá trị chỉ được sử dụng trong quá trình tối ưu hóa truy vấn và không được sử dụng trong quá trình thực thi truy vấn. Để biết thêm thông tin, hãy xem Gợi ý truy vấn (Giao dịch-SQL) .

  SỬ DỤNG AdventureWorks2012;
ĐI
  
- Chỉ định các biểu thức cho các giá trị OFFSET và FETCH
DECLARE @StartingRowNumber TINYINT = 1
      , @EndingRowNumber TINYINT = 8;
CHỌN ID bộ phận, Tên, Tên nhóm
TỪ HumanResources.Department
ĐẶT HÀNG THEO ASC của DepartmentID
    OFFSET @StartingRowNumber - 1 ROWS
    TÌM HIỂU TIẾP THEO @EndingRowNumber - @StartingRowNumber + CHỈ 1 ROWS
TÙY CHỌN (TỐI ƯU HÓA CHO (@StartingRowNumber = 1, @EndingRowNumber = 20));
 

D. Chỉ định một truy vấn con vô hướng không đổi cho các giá trị OFFSET và FETCH

Ví dụ sau sử dụng một truy vấn con vô hướng không đổi để xác định giá trị cho mệnh đề FETCH. Truy vấn con trả về một giá trị duy nhất từ ​​cột PageSize trong bảng dbo.AppSettings .

  - Chỉ định một truy vấn con vô hướng không đổi
SỬ DỤNG AdventureWorks2012;
ĐI
TẠO BẢNG dbo.AppSettings (AppSettingID INT NOT NULL, PageSize INT NOT NULL);
ĐI
CHÈN VÀO GIÁ TRỊ dbo.AppSettings (1, 10);
ĐI
DECLARE @StartingRowNumber TINYINT = 1;
CHỌN ID bộ phận, Tên, Tên nhóm
TỪ HumanResources.Department
ĐẶT HÀNG THEO ASC của DepartmentID
    OFFSET @StartingRowNumber ROWS
    TÌM KIẾM TIẾP THEO (CHỌN kích thước trang TỪ dbo.AppSettings WHERE AppSettingID = 1) CHỈ ROWS;
 

E. Chạy nhiều truy vấn trong một giao dịch duy nhất

Ví dụ sau đây cho thấy một phương pháp triển khai giải pháp phân trang đảm bảo trả về kết quả ổn định trong tất cả các yêu cầu từ truy vấn. Truy vấn được thực hiện trong một giao dịch duy nhất bằng cách sử dụng mức cô lập ảnh chụp nhanh và cột được chỉ định trong mệnh đề ORDER BY đảm bảo tính duy nhất của cột.

 SỬ DỤNG AdventureWorks2012;
ĐI
  
- Đảm bảo cơ sở dữ liệu có thể hỗ trợ mức cô lập ảnh chụp nhanh được đặt cho truy vấn.
IF (SELECT snapshot_isolation_state FROM sys.databases WHERE name = N'AdventureWorks2012 ') = 0
    ALTER DATABASE AdventureWorks2012 SET ALLOW_SNAPSHOT_ISOLATION ON;
ĐI
  
- Đặt mức cô lập giao dịch thành SNAPSHOT cho truy vấn này.
THIẾT LẬP MỨC CẤP GIAO DỊCH SNAPSHOT;
ĐI
  
- Bắt đầu giao dịch.
BẮT ĐẦU GIAO DỊCH;
ĐI
- Khai báo và thiết lập các biến cho giá trị OFFSET và FETCH.
DECLARE @StartingRowNumber INT = 1
      , @RowCountPerPage INT = 3;
  
- Tạo điều kiện để dừng giao dịch sau khi tất cả các hàng đã được trả lại.
WHILE (CHỌN ĐẾM (*) TỪ HumanResources.Department) & gt; = @StartingRowNumber
BẮT ĐẦU
  
- Chạy truy vấn cho đến khi đáp ứng điều kiện dừng.
CHỌN ID bộ phận, Tên, Tên nhóm
TỪ HumanResources.Department
ĐẶT HÀNG THEO ASC của DepartmentID
    OFFSET @StartingRowNumber - 1 ROWS
    CHỈ TÌM HIỂU TIẾP THEO @RowCountPerPage ROWS;
  
- Giá trị @StartingRowNumber tăng lên.
SET @StartingRowNumber = @StartingRowNumber + @RowCountPerPage;
TIẾP TỤC
CHẤM DỨT;
ĐI
CAM KẾT GIAO DỊCH;
ĐI
 

Sử dụng ORDER BY với UNION, EXCEPT và INTERSECT

Khi truy vấn sử dụng toán tử UNION, EXCEPT hoặc INTERSECT, mệnh đề ORDER BY phải được chỉ định ở cuối câu lệnh và kết quả của các truy vấn kết hợp được sắp xếp. Ví dụ sau trả về tất cả các sản phẩm có màu đỏ hoặc vàng và sắp xếp danh sách kết hợp này theo cột ListPrice .

  SỬ DỤNG AdventureWorks2012;
ĐI
CHỌN Tên, Màu, Danh sách Giá
TỪ SẢN XUẤT.
WHERE Color = 'Đỏ'
- Không thể chỉ định ORDER BY ở đây.
ĐOÀN KẾT TẤT CẢ
CHỌN Tên, Màu, Danh sách Giá
TỪ SẢN XUẤT.
WHERE Color = 'Màu vàng'
ĐẶT HÀNG THEO ListPrice ASC;
 

Ví dụ: Phân tích Azure Synapse và Hệ thống Nền tảng Analytics (PDW)

Ví dụ sau minh họa thứ tự của một kết quả được đặt bởi cột EmployeeKey theo thứ tự tăng dần.

  - Sử dụng AdventureWorks
  
CHỌN EmployeeKey, FirstName, LastName TỪ DimE Employee
NƠI LastName LIKE 'A%'
ĐẶT HÀNG BẰNG EmployeeKey;
 

Ví dụ sau sắp xếp một kết quả được đặt bởi cột EmployeeKey theo thứ tự giảm dần.

  - Sử dụng AdventureWorks
  
CHỌN EmployeeKey, FirstName, LastName TỪ DimE Employee
NƠI LastName LIKE 'A%'
ĐẶT HÀNG BẰNG MÔ TẢ CỦA NHÂN VIÊN;
 

Ví dụ sau sắp xếp một kết quả được đặt bởi cột LastName .

  - Sử dụng AdventureWorks
  
CHỌN EmployeeKey, FirstName, LastName TỪ DimE Employee
NƠI LastName LIKE 'A%'
ĐẶT HÀNG THEO LastName;
 

Ví dụ sau đây sắp xếp theo hai cột. Đầu tiên truy vấn này sắp xếp theo thứ tự tăng dần theo cột FirstName , sau đó sắp xếp các giá trị FirstName phổ biến theo thứ tự giảm dần theo cột LastName .

  - Sử dụng AdventureWorks
  
CHỌN EmployeeKey, FirstName, LastName TỪ DimE Employee
NƠI LastName LIKE 'A%'
ĐẶT HÀNG THEO LastName, FirstName;
 

Xem thêm

Biểu thức (Giao dịch-SQL)
CHỌN (Giao dịch-SQL)
FROM (Transact-SQL)
Chức năng Xếp hạng (Giao dịch-SQL)
HÀNG ĐẦU (Transact-SQL)
Gợi ý truy vấn (Transact-SQL)
NGOẠI TRỪ và INTERSECT (Giao dịch-SQL)
UNION (Transact-SQL)
CASE (Giao dịch-SQL)

Xem Thêm  Nền trong suốt - Độ mờ của hình ảnh trong CSS và HTML - độ mờ nền html css


Xem thêm những thông tin liên quan đến chủ đề đặt hàng bằng máy chủ sql

SQL Tutorial – 25: The ORDER BY Clause

  • Tác giả: Simplified
  • Ngày đăng: 2013-10-28
  • Đánh giá: 4 ⭐ ( 8438 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: The ORDER BY Clause is used to sort data obtained from a table through a SELECT Query. In this tutorial we’ll check out simple applications of the ORDER BY Clause.

Chuyển đổi dữ liệu cho dịch vụ tích hợp máy chủ SQL (SSIS)

  • Tác giả: helpex.vn
  • Đánh giá: 4 ⭐ ( 9897 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Trong loạt bài học từng bước về SSIS (Dịch vụ tích hợp máy chủ SQL), đây là phần sáu, trong đó chúng ta sẽ tìm hiểu một cách điều khiển mới: Chuyển đổi dữ liệu. Tôi chắc chắn rằng chỉ bằng…

Thiết lập máy chủ SQL đến máy chủ sql được liên kết

  • Tác giả: qastack.vn
  • Đánh giá: 5 ⭐ ( 5698 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: [Tìm thấy giải pháp!] Theo hiểu biết của tôi về vấn đề này, đó là vấn đề “HOP”. tức là…

Cách để Tạo cơ sở dữ liệu máy chủ SQL

  • Tác giả: www.wikihow.vn
  • Đánh giá: 4 ⭐ ( 9186 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Cách để Tạo cơ sở dữ liệu máy chủ SQL. Cơ sở dữ liệu máy chủ SQL là một trong những cơ sở dữ liệu phổ biến nhất hiện nay, một phần là bởi cơ sở dữ liệu này rất dễ khởi tạo và duy trì. Với chương trình giao diện đồ họa người dùng (GUI) như…

Hướng dẫn cấu hình SQL Server Replication hoàn chỉnh

  • Tác giả: comdy.vn
  • Đánh giá: 3 ⭐ ( 9163 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Bài viết này liệt kê các kiểu nhân rộng trong SQL Server, giải thích cách hoạt động và hướng dẫn cách thực hiện nhân rộng với SQL Server Replication.

Lấy Lại Máy Chủ Sql Không Tồn Tại Misa 2017, Lấy Lại Máy Chủ Sql Trên Phần Mềm Misa

  • Tác giả: dichvutructuyen.com.vn
  • Đánh giá: 3 ⭐ ( 6913 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: 1, Lỗi không cho cài được phần mềm MISA:– Cấu hình máy tính thấp hơn so với quy định– Chưa cài đặt Frame work 4

Hướng dẫn cài đặt và cấu hình SQL Server để kết nối từ xa qua Internet

  • Tác giả: www.adcvietnam.net
  • Đánh giá: 4 ⭐ ( 6459 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Hệ quản trị cơ sở dữ liệu Microsoft SQL Server của Microsoft được đánh giá là một trong những hệ quản trị cơ sở dữ liệu tốt và mạnh nhất hiện nay

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

By ads_php