Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Hai truy vấn này có giống nhau không - GROUP BY so với DISTINCT?

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. KHÔNG CÓ VÀ KHÔNG TỒN TẠI

  2. Làm cách nào để đếm số thập phân trong SQL?

  3. SQL - Làm cách nào để chỉ lấy các số sau số thập phân?

  4. Xoay vòng bằng SQL Server 2000

  5. SQL:Tích lũy cột &Tổng trên Hàng