和in的区别深入研究MySQL查询条件中的=与IN的区别(mysql查询条件中)
MY SQL 查询条件中的= 与 IN 的区别常常会让 databases 和 devs 困惑,那么两者有什么区别呢?读完本文,你就可以发现答案。
= 和 IN 都可以用来进行 MySQL 查询条件上的条件比较。其中 = 只是等于,而 IN 则可以有多个比较范围。
= 基本语法
假设有一个 User 表,并且列出几条数据:
ID | Name | Age
1 | Tim | 20
2 | Tom | 21
3 | Sam | 22
4 | Bob | 20
5 | Jim | 21
使用 = 语法查询年龄等于 20 的记录:
SELECT * FROM user WHERE age = 20;
`age` = `20`
返回的结果为:
ID | Name | Age
1 | Tim | 20
4 | Bob | 20
IN 基本语法
使用 IN 语法查询可以查询多个比较范围,例如查询 age 为 20 和 21 的记录
SELECT * FROM user WHERE age IN(20, 21);
所比较的数据是 `IN` 内的
`age“IN“(20, 21)`
返回的结果为:
ID | Name | Age
1 | Tim | 20
2 | Tom | 21
4 | Bob | 20
5 | Jim | 21
从上面的结果中可以看出,使用 IN 时,你可以一次查询多个条件;而使用 = 时仅能够一次查询一个条件,这就是这两个查询条件最大的不同所在。
= 和 IN 在查询效率上的差异
在上面的查询条件下,我们看看执行效率有何不同:
SELECT * FROM user WHERE age = 20;
SELECT * FROM user WHERE age IN(20,21);
从性能的角度来看,如果字段/值之间有多重筛选条件,那么使用 = 语法可以改善查询效率,因为查询结果范围会变小;而 IN 语法则是比较多的,查询结果也会相对较大,所以不太适合用在数据量较大的情况下。
归结
上面已经讲述了 MY SQL 查询条件中的= 与 IN 的区别,两者可以做同样的比较,但是 IN 语法在查询范围和效率上有更大的优势,所以在使用查询语法的时候,开发人员应该明确自己的具体查询范围和要求,以选择准确的查询语法。