Member 13867163 Ответов: 3

Результат внутреннего соединения отличается


Привет,

приведенное ниже количество результатов составляет 8 записей.

объявить таблицу @t (id int)
объявить таблицу @t2(id2 int)
вставить в @t значения(1),(1),(1)
вставить в @t2 значения(1),(1),(1)
выберите t1.id from @t t1 inner join @t2 t2 on t1.id=t2.id2

Я думаю, что счет должен быть 9 записей

Пожалуйста, предложите.

Спасибо

Что я уже пробовал:

Inner Join Result is different

CHill60

Когда я запускаю ваш код я получаю 9 строк

Richard Deeming

Репост
Вы уже опубликовали это на форуме базы данных:
https://www.codeproject.com/Messages/5540480/inner-join-results.aspx[^]

3 Ответов

Рейтинг:
26

Member 11621026

declare @t table (id int)
declare @t2 table(id2 int)
insert into @t values(1),(1),(1)
insert into @t2 values(1),(1),(1)

select a.* from(
select row_number() over(order by id) as Sno,* from @t) as a
inner join(
select row_number() over(order by id2) as Sno,* from @t2) as b
on a.sno=b.sno


Member 13867163

Привет,

Спасибо за ваш ответ.
Мое сомнение здесь заключается в том, что результат внутреннего соединения дает 8 записей в соответствии с моим запросом.
я сомневаюсь, что в соответствии с построчным соединением это должно быть 9 записей, я думаю. почему дается 8 записей. никакой внутренней логики.

Пожалуйста предложите

Рейтинг:
0

Member 11621026

можете ли вы поделиться запросов со мной так что я могу проверить.но в внутреннее соединение запрос будет таблетировать, как перекрестное соединение, потому что каждый идентификатор строки такой же, как следующий код строк таким образом, что внутреннее соединение присоединится к каждой записи в рубрике таблица ID.


Member 13867163

Именно так. Таким образом, мое сомнение заключается в том, что в первой таблице у меня есть 3 идентификатора, а во второй таблице у меня есть 3 идентификатора.
Таким образом, 3X3=9 записей должны прийти. Но при выполнении запроса я получаю 8 записей.

CHill60

Не оставляйте комментарии или вопросы в качестве решений! Либо используйте опцию "есть вопрос или комментарий?" ссылка рядом с сообщением или используйте ссылку "ответить" рядом с комментарием

Рейтинг:
0

Member 11621026

это невозможно
только один случай может быть возможен для этого, когда один не соответствует


Member 13867163

Нет я хочу сказать что у меня есть 3 идентификатора есть ли они в таблице 1 я присоединяюсь к таблице 2
ряд за рядом идентификаторы базы 3 в таблице 1 соединяются с таблицей 2, как показано ниже.

Первый идентификатор 1, имеющий совпадения, нашел 3 идентификатора в таблице 2, так что записи представляют собой 3 строки.
второй идентификатор 1 имеющий совпадение нашел 3 идентификатора в таблице 2 так что записи представляют собой 3 строки
третий идентификатор 1 имеющий совпадение нашел 3 идентификатора в таблице 2 так что записи представляют собой 3 строки

Так что тотол-это 9 рекордов.
Но почему он дает 8 записей?

Пожалуйста предложите