下面是关于"Mysql中WHERE与ON的区别及何时使用"的完整攻略:
区别
WHERE
- WHERE是用于筛选行的(即对于SELECT语句或者UPDATE语句,我们使用WHERE语句来筛选需要处理的行记录);
- WHERE是在数据表中,查询完成后进行过滤的,即先从表中检索记录,再通过WHERE进行判断,将符合条件的记录返回;
示例1:
SELECT * FROM表A
WHERE A.X = '值1';
上面的语句会返回表A中所有X列值等于'值1'的所有记录。
ON
- ON是用于连接表(即通过JOIN语句,连接两张或多张数据表,需要在ON子句中指定连接条件);
- 在JOIN操作中,我们可以使用ON语句来指定两个表的关联条件,例如常用的INNER JOIN就是通过ON子句来指定连接条件的;
示例2:
SELECT * FROM 表A
INNER JOIN 表B
ON A.X = B.X;
上面的语句会通过INNER JOIN将表A和表B关联起来,并且要求它们的X列的值是相等的。
何时使用
- 使用WHERE子句来定义过滤条件,只能用于当前查询的两个表的列之间无关联关系的条件比较;
- 使用ON子句,可以实现各种连接操作的条件详细说明,包括JOIN、LEFT JOIN、RIGHT JOIN等等;
所以,当我们需要在连接多张数据表的时候,应该使用ON,而在针对单张数据表时,只需要使用WHERE就可以了。
示例3:
SELECT A.X, SUM(B.Y)
FROM 表A
JOIN 表B
ON A.ID = B.AID
WHERE A.X = '值1'
GROUP BY A.X;
上面的语句会连接表A和表B,返回A表中X列值等于'值1'的所有记录,并且通过A表的ID列和B表的AID列进行关联,最后通过对B表的Y列进行SUM,返回一个汇总结果。
总的来说,WHERE一般用于过滤需要查询的数据,而ON则用于连接多张数据表的条件指定。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mysql中where与on的区别及何时使用详析 - Python技术站