Không cần phải tránh các Hàm phân tích nếu cơ sở dữ liệu của bạn hỗ trợ chúng, ví dụ:ROW_NUMBER ()
SELECT
ROW_NUMBER() OVER (ORDER BY [<PRIMARYKEY_COLUMN_NAME>]) AS Number
FROM
[<TABLE_NAME>]
Cú pháp là Func([ arguments ]) OVER (analytic_clause)
bạn cần tập trung vào OVER (). Dấu ngoặc đơn cuối cùng này tạo (các) phân vùng cho các hàng của bạn và áp dụng Func () trên từng phân vùng này. Trong đoạn mã trên, chúng ta chỉ có một tập hợp / phân vùng duy nhất của các hàng. Do đó, trình tự được tạo là dành cho tất cả các hàng.
Bạn có thể tạo nhiều tập dữ liệu của mình và tạo số thứ tự cho từng tập chỉ trong một lần. Ví dụ:nếu bạn cần tạo số thứ tự cho tất cả các tập hợp các hàng có cùng categoryId. Bạn chỉ cần thêm Partition By
mệnh đề như thế này (PARTITION BY categoryId ORDER BY [<PRIMARYKEY_COLUMN_NAME>])
.
Hãy nhớ rằng sau FROM
bạn cũng có thể sử dụng thêm một ORDER BY
khác để sắp xếp dữ liệu của bạn theo cách khác. Nhưng nó không ảnh hưởng đến OVER ()