Sử dụng tự nối:
Thao tác này sẽ trả về tất cả các giá trị có giá trị khóa con phù hợp, trong trường hợp có bội số.
SELECT a.value
FROM TABLE a
JOIN (SELECT MAX(t.subkey) AS max_subkey
FROM TABLE t
WHERE t.key = 1) b ON b.max_subkey = a.subkey
WHERE a.key = 1
Sử dụng RANK &CTE (SQL Server 2005+):
Thao tác này sẽ trả về tất cả các giá trị có giá trị khóa con phù hợp, trong trường hợp có bội số.
WITH summary AS (
SELECT t.*,
RANK() OVER(ORDER BY t.subkey DESC) AS rank
FROM TABLE t
WHERE t.key = 1)
SELECT s.value
FROM summary s
WHERE s.rank = 1
Sử dụng ROW_NUMBER &CTE (SQL Server 2005+):
Điều này sẽ trả về một hàng, ngay cả khi có nhiều hàng có cùng giá trị khóa con ...
WITH summary AS (
SELECT t.*,
ROW_NUMBER() OVER(ORDER BY t.subkey DESC) AS rank
FROM TABLE t
WHERE t.key = 1)
SELECT s.value
FROM summary s
WHERE s.rank = 1
Sử dụng TOP:
Điều này sẽ trả về một hàng, ngay cả khi có nhiều hàng có cùng giá trị khóa con ...
SELECT TOP 1
t.value
FROM TABLE t
WHERE t.key = 1
ORDER BY t.subkey DESC