Обычные внутренние JOIN
операции генерируют только строки результата для строк таблицы, соответствующих их условию ON
. Они подавляют любые строки, которые не совпадают. Это означает, что вы можете переместить содержимое предложений ON
в ваше предложение WHERE
и получить тот же набор результатов. Тем не менее, не делай этого; СОЕДИНЕНИЯ легче понять, если в них есть ON
предложения.
Если вы используете LEFT JOIN
, своего рода внешнее соединение, вы получите строки из первой упомянутой вами таблицы, которые не соответствуют ни одной строке во второй таблице в соответствии с предложением ON
.
SELECT a.name, b.name
FROM a
LEFT JOIN b ON a.a_id = b.a_id
дает вам набор результатов, содержащий все строки a
со значениями NULL в b.name
, указывающими, что условие ON
не соответствует.