sql >> Database teknologi >  >> RDS >> Sqlserver

Duplikerede resultater ved udførelse af 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 ;

Hvis du har flere rækker i den ene eller de andre tabeller for den samme (str1, str2) kombination, kan du vælge, hvilke der skal returneres ved at ændre INNER slutte sig til enten LEFT , RIGHT eller FULL deltage.



  1. GeoDjango på Windows:Kunne ikke finde GDAL-biblioteket / OSError:[WinError 126] Det angivne modul kunne ikke findes

  2. Hvordan formaterer man en NUMBER kolonne i Oracle?

  3. SQL-forespørgsel:Returner maks. værdipost for en gruppe

  4. Sikkerhedskopier automatisk MySQL-database på linux-serveren