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

Kết quả trùng lặp khi thực hiện INNER JOIN

SELECT 
    a.id AS a_id, a.str1 AS a_str1, a.str2 AS a_str2, 
    b.id AS b_id, b.str1 AS b_str1, b.str2 AS b_str2
FROM 
    ( SELECT *
           , ROW_NUMBER() OVER (PARTITION BY str1, str2 ORDER BY id) AS rn
      FROM #A 
    ) a
  INNER JOIN 
    ( SELECT *
           , ROW_NUMBER() OVER (PARTITION BY str1, str2 ORDER BY id) AS rn
      FROM #B 
    ) b 
    ON  a.str1 = b.str1 
    AND a.str2 = b.str2 
    AND a.rn = b.rn ;

Nếu bạn có nhiều hàng hơn trong một hoặc các bảng khác cho cùng một (str1, str2) kết hợp, bạn có thể chọn những cái nào sẽ được trả lại bằng cách thay đổi INNER tham gia vào LEFT , RIGHT hoặc FULL tham gia.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển đổi ngày và văn hóa:Sự khác biệt giữa DATE và DATETIME

  2. SQL INSERT INTO từ nhiều bảng

  3. Không thể sử dụng trong toán tử PIVOT vì nó không bất biến đối với NULL

  4. Khôi phục cơ sở dữ liệu SQL một cách dễ dàng - Hướng dẫn từng bước

  5. Sắp xếp tự nhiên với SQL Server