2015-03-20 1 views
0
use classicmodels; 

select Orders.OrderNumber, 
     Customers.CustomerName, Orders.Status, orders.shippeddate, 
     Customers.Country 
from Customers **cross join/inner join** Orders 
on Customers.CustomerNumber = Orders.customerNumber 
order by 1 asc 

Привет всем, я действительно запутался, почему inner join в моем запросе не очень отличаться от результата cross join? Я думал, что cross join будет результатом декартова произведения, но оба соединения дают мне 326 строк. Я также видел где-то, что я не должен использовать не уникальные данные?Inner Регистрация и Cross Join получают тот же результат

+0

попробуйте удалить условие «Customers.CustomerNumber = Orders.customerNumber», это тот же результат? – Hybridzz

+0

Да, я удалил это условие и снова попробовал оба соединения. Оба они вернули 39 772 строки. – Qruri

ответ

1

Из MySQL JOIN документы:

В MySQL JOIN, CROSS JOIN и INNER JOIN являются синтаксические эквиваленты (они могут заменить друг друга). В стандартном SQL они эквивалентны не . INNER JOIN используется с предложением ON, в противном случае используется CROSS JOIN .

+0

Чтение этого заставило меня немного заплакать ... почему MySQL должен сделать что-то подобное и игнорировать стандарт ANSI :( – jpw

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