where的区别MySQL中的on与where有什么区别25字告诉你(mysql中on与)
MySQL中的on与where有什么区别?
MySQL中的on与where是两个非常重要的关键词,它们都可以用来限制查询结果。虽然它们看起来非常相似,但它们确实有一些区别。本文将从语法、使用场景和效率方面为您详细介绍on与where的区别。
语法的区别
在MySQL中,on和where都是用来限制查询结果的关键词,但它们的使用方式不同。下面是它们的语法结构:
1. 使用On:
select a.id,a.name,b.phone from table1 a join table2 b on a.id=b.id where a.name=”test”;
2. 使用Where:
select * from table1 where name=”test” and age>18;
可以看出,on通常用在联接(join)时,并且是跨表联接的限制条件;而where则是在查询单表时应用的条件。on中的条件将发生在联接之前,而where中的条件将发生在查询之后。
使用场景的区别
在实际的应用中,on和where也有一些不同的使用场景。下面是一些常见的应用场景:
1. 使用on:
在多个表联结(join)查询时,比如使用inner join和outer join时,可通过on来指定联结的关系和限制条件。
select a.id,a.name,b.phone from table1 a join table2 b on a.id=b.id where a.name=”test”;
2. 使用where:
where通常用于对查询结果进行更细致的限制,如对查询结果排序、限制数据范围等。
select * from table1 where name=”test” and age>18;
效率的区别
在联接查询中,on和where还有一些效率上的区别。由于on是在联接操作之前生效的,因此它可以在联接时先进行一些筛选操作。这样可以让联接的表中只有需要的数据,可以减少无用的计算和筛选,提高查询效率。
下面是一个使用on的例子:
select a.id,a.name,b.phone from table1 a join table2 b on a.id=b.id and b.phone=”1234567″ where a.name=”test”;
这里是指定了联接的id相同,并且电话为”1234567″。这样就可以先筛选出符合条件的记录,然后再进行联结操作。这样会比先进行联结,再进行where条件筛选高效。
总结
综上所述,on和where虽然都可以用于查询数据,但它们的作用是不同的。on用于限制联接条件的筛选,而where用于限制查询结果的数据范围。在使用时要根据实际的情况来选择使用on还是where,以提高查询效率和准确性。