前言
我们知道,JOIN表的查询条件可以放在ON语句处,也可以放在 WHERE 语句处。
用 t2.status = 1
这条件举例:
方式1:放在 WHERE 语句处
SELECT t1.* FROM table1 t1
LEFT JOIN table2 AS t2 ON t2.k1 = t1.k2
WHERE t2.`status` = 1
方式2:放在 ON 语句处
SELECT t1.* FROM table1 t1
LEFT JOIN table2 AS t2 ON (t2.k1 = t1.k2 AND t2.`status` = 1)
平时做开发我基本都是用 方式1,而 方式2 就较少使用,可能会有人像我一样,觉得这两种方式的查询结果是一样的,但其实不是的。
测试
建立测试表
用户表:
CREATE TABLE `users` (`uid` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户ID',`name` varchar(255) NOT NULL COMMENT '昵称',PRIMARY KEY (`uid`