第一个使用等式检查操作符
WHERE column_value = 'All'
第二个使用OR运算符和单值
WHERE column_value IN ('All')
如果只有一个值,SQL引擎会将IN更改为=吗?
MySQL和PostgreSQL中是否存在相同的差异?
对于单个IN子句,没有区别。下面是使用EMPS表的演示..
select * from emps where empid in (1)
select * from emps where empid=1
执行计划中第一个查询的谓词:
[PerformanceV3].[dbo].[Emps].[empID]=CONVERT_IMPLICIT(int,[@1],0)
执行计划中第二个查询的谓词:
[PerformanceV3].[dbo].[Emps].[empID]=CONVERT_IMPLICIT(int,[@1],0)
它在两个引擎上没有任何区别(对于大多数数据库,包括SQL Server,Oracle等,它都是相同的)。两个引擎都会将IN转换为=