Ví dụ số 2 của bạn khiến tôi vò đầu bứt tai một lúc - Tôi tự nghĩ:"Bạn không thể DISTINCT
một cột duy nhất, điều đó có nghĩa là gì? "- cho đến khi tôi nhận ra điều gì đang xảy ra.
Khi bạn có
SELECT DISTINCT(t.ItemNumber)
bạn không không , mặc dù xuất hiện, nhưng thực sự yêu cầu các giá trị khác biệt của t.ItemNumber
! Ví dụ số 2 của bạn thực sự được phân tích cú pháp giống như
SELECT DISTINCT
(t.ItemNumber)
,
(SELECT TOP 1 ItemDescription
FROM Transactions
WHERE ItemNumber = t.ItemNumber
ORDER BY DateCreated DESC) AS ItemDescription
FROM Transactions t
với các dấu ngoặc đơn đúng về mặt cú pháp nhưng thừa xung quanh t.ItemNumber
. Tập hợp kết quả nói chung là DISTINCT
áp dụng.
Trong trường hợp này, vì GROUP BY
của bạn nhóm theo cột thực sự khác nhau, bạn sẽ nhận được kết quả giống nhau. Tôi thực sự hơi ngạc nhiên rằng SQL Server thì không (trong GROUP BY
ví dụ) nhấn mạnh rằng cột được truy vấn phụ được đề cập trong GROUP BY
danh sách.