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

nhóm sql theo so với riêng biệt

GROUP BY ánh xạ các nhóm hàng thành một hàng, cho mỗi giá trị riêng biệt trong cụ thể , thậm chí không nhất thiết phải có trong danh sách chọn.

SELECT b, c, d FROM table1 GROUP BY a;

Truy vấn này là SQL hợp pháp ( sửa: chỉ trong MySQL; thực ra nó không phải là SQL tiêu chuẩn và không được các thương hiệu khác hỗ trợ). MySQL chấp nhận nó và nó tin tưởng rằng bạn biết mình đang làm gì, chọn b , cd theo một cách rõ ràng vì chúng phụ thuộc chức năng của a .

Tuy nhiên, Microsoft SQL Server và các thương hiệu khác không cho phép truy vấn này, vì nó không thể xác định các phụ thuộc chức năng một cách dễ dàng. chỉnh sửa: Thay vào đó, SQL chuẩn yêu cầu bạn tuân theo Quy tắc giá trị đơn , tức là mọi cột trong danh sách chọn phải được đặt tên trong GROUP BY mệnh đề hoặc nếu không là một đối số cho một hàm đã đặt.

Trong khi DISTINCT luôn xem xét tất cả các cột trong danh sách chọn và chỉ những cột đó. Một quan niệm sai lầm phổ biến rằng DISTINCT cho phép bạn chỉ định các cột:

SELECT DISTINCT(a), b, c FROM table1;

Mặc dù có dấu ngoặc đơn tạo nên DISTINCT trông giống như lệnh gọi hàm, nó không phải vậy. Đó là một tùy chọn truy vấn và một giá trị khác biệt trong bất kỳ trường nào trong ba trường của danh sách chọn sẽ dẫn đến một hàng riêng biệt trong kết quả truy vấn. Một trong những biểu thức trong danh sách chọn này có dấu ngoặc đơn xung quanh nó, nhưng điều này sẽ không ảnh hưởng đến kết quả.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Máy chủ thích ứng không khả dụng hoặc không tồn tại lỗi kết nối với SQL Server từ PHP

  2. T-SQL:Làm tròn đến khoảng thời gian 15 phút gần nhất

  3. Học máy có ý nghĩa như thế nào đối với các chuyên gia cơ sở dữ liệu

  4. Đưa Pivot-Table được tạo động vào một bảng tạm thời

  5. Loại bỏ các giá trị trùng lặp chỉ dựa trên một cột của bảng