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

SQL Server 2008 so sánh hai bảng trong cùng một cơ sở dữ liệu và cột nhận được thay đổi

Bạn có thể thực hiện việc này bằng cách sử dụng LEFT JOIN :

SELECT  b.Product,
        b.Qty,
        b.Price,
        Result = CASE WHEN a.product IS NULL THEN 'New'
                    ELSE 'Updated: ' + 
                        STUFF(  CASE WHEN a.Qty != b.Qty THEN ',Qty' ELSE '' END + 
                                CASE WHEN a.Price != b.Price THEN ',Price' ELSE '' END,
                            1, 1, '')
                END
FROM    TableB b    
        LEFT JOIN TableA a
            ON a.Product = b.Product
WHERE   a.Product IS NULL
OR      a.Qty != b.Qty
OR      a.Price != b.Price;

Ví dụ về SQL Fiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các hàm TRIM, LTRIM và RTRIM của SQL Server

  2. Toán tử GIỮA so với> =VÀ <=:Có sự khác biệt về hiệu suất không?

  3. Thay thế lần xuất hiện đầu tiên của chuỗi con trong một chuỗi trong SQL

  4. Chuyển đổi chuỗi thành int trong linq thành các thực thể trên cơ sở dữ liệu lớn

  5. SQL Server - Truy vấn sysobjects