Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zduplikowane wyniki podczas wykonywania 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 ;

Jeśli masz więcej wierszy w jednej lub drugiej tabeli dla tego samego (str1, str2) kombinacji, możesz wybrać, które zostaną zwrócone, zmieniając INNER dołącz do LEFT , RIGHT lub FULL dołącz.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rozwiązywanie problemów z długimi zapytaniami w MS SQL Server

  2. Uzyskaj rozmiar pamięci tabeli i indeksu na serwerze sql

  3. Jaki jest cel replikacji danych?

  4. nvarchar(max) nadal jest obcinany

  5. Jak uniknąć limitów sp_OACreate?