Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Дублирани резултати при изпълнение на 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 ;

Ако имате повече редове в една или друга таблица за същия (str1, str2) комбинация, можете да изберете кои да бъдат върнати, като промените INNER присъединете към LEFT , RIGHT или FULL присъединете се.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създайте географска полилиния от точки в T-SQL

  2. Преобразувайте „datetime“ в „smalldatetime“ в SQL Server (T-SQL примери)

  3. Как да създадете функция на SQL Server, за да обедините множество редове от подзаявка в едно ограничено поле?

  4. Как да деактивирате всички ограничения за проверка и външни ключове в база данни в SQL Server (примери за T-SQL)

  5. как да задам стойност на колона, равна на ред №?