Каждая из трех 1 в test1
соединяется с каждой из двух 1 в test2
, и в результате получается 3х2 = 6 строк, которые вы получили в наборе результатов. Ничто не отличается между первым, вторым и третьим 1 в test1
и ничем не отличается между первым и вторым 1 в test2
.
Также имейте в виду, что выполняются все следующие условия:
NULL = 1
NULL <> 1
NULL = NULL
NULL <> NULL
ложно. Все условия, имеющие NULL на одной стороне, будут оцениваться как ложные. Это потому, что NULL представляет неизвестное значение.
То, что вы ожидали, совершенно неверно, как вы можете видеть. Кажется, вы ожидали, что первая строка test1
будет соединена с первой строкой test2
и так далее. В sql такой «магии» нет - вся логика объединения помещается в предложение ON
, которое объединяет 1, как было ранее.