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

SQL Server 2000 sang 2008 Migration - ORDER BY Sự cố khi sử dụng DISTINCT

Bạn có thể thay đổi ngữ nghĩa một chút bằng cách thực hiện điều này:

SELECT ZipCode FROM 
(
  SELECT DISTINCT ZipCode = LEFT(tz.Zipcode, 5)
    FROM dbo.TerritoryZip
) AS x
ORDER BY ZipCode;

Không thực sự giải quyết được vấn đề vì truy vấn dài dòng hơn và bạn vẫn không thể tránh chạm vào nó. Bản sửa lỗi bạn đã đề xuất tốt hơn trong tâm trí tôi vì nó rõ ràng hơn về những gì đang xảy ra.

Không quá khắt khe, nhưng nếu bạn không nghĩ rằng mình có thể "tìm thấy tất cả các trường hợp của loại SQL này" thì làm sao bạn tin tưởng vào thử nghiệm của mình?

Tôi đề nghị rằng giữ chế độ 2000 không phải là câu trả lời tối ưu. Lý do là điều này có thể khiến cú pháp khác bị hỏng (ví dụ:cách bạn có thể gọi các hàm quản lý động - xem this Bài đăng trên blog của Paul Randal và nhận xét của tôi về nó), bạn cũng có nguy cơ tồn tại mã cần được sửa (ví dụ:kiểu cũ *= / =* các phép nối hợp lệ trong chế độ compat 2000, nhưng sẽ không hợp lệ khi bạn chuyển từ 2008 R2 -> Denali, không hỗ trợ 2000 compat).

Không có cài đặt "mức độ nghiêm ngặt" nhưng bạn có thể bỏ phiếu cho BẬT ĐẶT NGHIÊM CẤM CỦA Erland Sommarskog; gợi ý .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ví dụ về DATEDIFF () trong SQL Server

  2. Sự khác biệt giữa Equi-Join và Inner-Join trong SQL

  3. Thao tác với cấu trúc bảng

  4. Thực hiện vòng lặp while trong SQL Server 2008

  5. Làm cách nào để truy vấn một giá trị trong cột SQL Server XML