mysql之inner和left的区别
// inner join(这个是inner join)
SELECT *
FROM
email_template_action_contents AS etac
INNER JOIN email_template_actions AS eta ON etac.template_action_id = eta.id
AND eta.template_category_id = 4
AND etac.status_from = 1;
// left join 不生效, 和上面的inner join效果一样
SELECT *
FROM email_template_action_contents AS etac
LEFT JOIN email_template_actions AS eta
ON etac.template_action_id = eta.id
WHERE etac.status_from = 1 AND eta.template_category_id = 4;
// left join 生效
SELECT *
FROM email_template_action_contents AS etac
LEFT JOIN email_template_actions AS eta
ON etac.template_action_id = eta.id AND eta.template_category_id = 4
WHERE etac.status_from = 1;
但此时要注意:LEFT JOIN 加 WHERE eta.xxx = yyy 会失效“左连接保留全部”的特性,结果跟 INNER JOIN 一样。
想保留主表全量,条件必须放在 ON 子句中
