2015-09-09 2 views
-1

У меня есть таблица TableA со 100 строками в ней. Он имеет столбец loanid, который может иметь дубликаты.Объединение столбцов из разных таблиц без дублирования

Мне нужно join с другим столом TableB, в котором есть столбец loanid, чтобы присоединиться.

Но, loanid в tableB может быть или не быть в tableA.

Так что, если я взять right join или left join, я хочу, чтобы результат такой же, как 100.

Поскольку существует совпадение и удаление информации loanid как в таблице, есть шанс результата быть не 100 строк , если я делаю right join или left join.

ответ

2

Из того, что вы описали вы хотите left join:

select . . . 
from tablea a left join 
    tableb b 
    on a.loanid = b.loanid; 

Это сохраняет каждую строку в tablea вместе со всеми соответствующими строками tableb. Из вашего описания, tableb не имеет дубликатов, поэтому это будет хранить все в tablea без дубликатов.

Если tableb были дубликаты и вы хотите один произвольный ряд, то вы можете использовать outer apply:

select . . . 
from tablea a outer apply 
    (select top 1 b.* 
     from tableb b 
     where a.loanid = b.loanid 
    ) b; 
+0

я попробовал первый подход, но я не получаю 100 строк, я получаю 123 строк – SmartestVEGA

+0

Второй один совершенно рабочий ... ничего себе! – SmartestVEGA

+0

Но получу ли соответствующие значения столбца из tableb для соответствия loanid в таблице? – SmartestVEGA

Смежные вопросы