Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Неожиданный результат  [new]
Ovr777
Member

Откуда:
Сообщений: 1
Привет всем.
Может кто знает, почему результаты выборок - разные?
declare @R table (x int)
declare @R2 table (x int)

insert into @R(x)
Values (0),(1),(2),(3);

insert into @R2(x)
Values (5),(1),(2),(3);

select l.x, r.x x2,coalesce(l.x,r.x) ,coalesce(r.x,l.x)
from @R l full join @r2 r on l.x = r.x
where coalesce(l.x,r.x) = coalesce(r.x,l.x)

select l.x, r.x x2,coalesce(l.x,r.x) ,coalesce(r.x,l.x)
from @R l, @r2 r
where coalesce(l.x,r.x) = coalesce(r.x,l.x)
31 авг 16, 17:46    [19613755]     Ответить | Цитировать Сообщить модератору
 Re: Неожиданный результат  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1454
Ovr777,

наверное потому что full outer join <> cross join
31 авг 16, 17:51    [19613781]     Ответить | Цитировать Сообщить модератору
 Re: Неожиданный результат  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
Ovr777
почему результаты выборок - разные?
Потому что cross join это не full join.
Уберите предложение where у обоих запросов и сравните результат.
31 авг 16, 17:52    [19613787]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить