row_number
là cách tiếp cận tốt nhất nhưng vì bạn chỉ muốn một hàng duy nhất, hãy chắc chắn xem xét kế hoạch. Có thể tốt hơn nếu xác định hàng mong muốn, sau đó kết hợp trở lại bảng ban đầu để truy xuất các cột bổ sung.
WITH T1
AS (SELECT *,
ROW_NUMBER() OVER (ORDER BY number) AS RN
FROM master..spt_values)
SELECT name,
number,
type,
low,
high,
status
FROM T1
WHERE RN = 1000;
Cung cấp
WITH T2
AS (SELECT number,
type,
name,
ROW_NUMBER() OVER (ORDER BY number) AS RN
FROM master..spt_values)
SELECT TOP 1 C.name,
C.number,
C.type,
C.low,
C.high,
C.status
FROM T2
CROSS APPLY (SELECT *
FROM master..spt_values v
WHERE v.number = T2.number
AND v.type = T2.type
AND ( v.name = T2.name
OR ( v.name IS NULL
AND T2.name IS NULL ) )) C
WHERE RN = 1000;
Cung cấp