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

Tìm các hàng đã thay đổi (khóa tổng hợp có rỗng)

ANSI SQL có IS [NOT] DISTINCT FROM cấu trúc chưa được triển khai trong SQL Server ( Yêu cầu kết nối ).

Có thể mô phỏng chức năng này trong SQL Server sử dụng EXCEPT / INTERSECT tuy nhiên. Cả hai điều này đều xử lý NULL như bình đẳng trong các so sánh. Bạn đang muốn tìm các hàng mà các cột chính giống nhau nhưng các cột giá trị khác nhau. Vì vậy, điều này nên làm điều đó.

SELECT *
FROM   SourceTable S
       JOIN DestinationTable D
         ON S.Key1 = D.Key1
            /*Join the key columns on equality*/
            AND NOT EXISTS (SELECT S.Key2,
                                   S.Key3
                            EXCEPT
                            SELECT D.Key2,
                                   D.Key3)  
             /*and the value columns on unequality*/
            AND NOT EXISTS (SELECT S.Value1,
                                   S.Value2
                            INTERSECT
                            SELECT D.Value1,
                                   D.Value2)  


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. chỉ nhóm sql theo các hàng theo trình tự

  2. UDT dưới dạng một tham số trong truy vấn EF4

  3. Làm cách nào để viết câu lệnh if else bằng ngôn ngữ biểu thức của Dịch vụ Báo cáo?

  4. Cú pháp không chính xác gần từ khóa 'with' ... câu lệnh trước đó phải được kết thúc bằng dấu chấm phẩy

  5. SQL chọn tối đa (ngày) và giá trị tương ứng