Если у меня есть этот запрос:MYSQL - использование и в РЕГИСТРИРУЙТЕСЬ против ИНЕКЕ
select * from tableA
left outer join tableB on tableA.id=tableB.id
AND tableB.foo = 1
where tableA.owner=10
я получаю 29 результатов, но если я перееду, что и в выражении WHERE вроде:
select * from tableA
left outer join tableB on tableA.id=tableB.id
where tableA.owner=10
AND tableB.foo = 1
I то получите только 17 результатов.
Я просмотрел все вокруг и не могу найти окончательное руководство относительно того, как использование AND отличается при использовании его в JOIN по сравнению с предложением WHERE. Кто-нибудь может мне это объяснить?
Кроме того, если я делаю что-то вроде AND tableB.foo = NULL
в JOIN, все мои поля tableB.foo имеют NULL в результатах запроса, даже если они не являются нулевыми в таблице. Имеет ли значение AND в предложении JOIN это поле в выборе FROM перед тем, как он фильтруется в предложении WHERE?
вы можете посмотреть здесь: http://stackoverflow.com/a/15706298/7416478 –