sql语句中嵌套时候用in 和=有什么区别

2024-11-30 06:35:43
推荐回答(2个)
回答1:

如果子查询只有1条记录,in和=是没有区别,如果子查询有多条记录,用=会出错的,所以in是无论只查询有多少条记录都可以使用,而=只有当子查询只有1条记录的时候才能使用
in和exists理解上其实是差不多,但对数据库而言,in的执行顺序是先执行只查询条件,然后把记录和外查询核对,找符合条件的,
而exists是先执行外查询,再执行子查询,找到外查询记录后和只查询对比符合条件的,
如果外查询和子查询的条目数差异很大,那么效率相差很明显的

回答2:

比如说,

条件 where A in 结果 (B, A 注:这里的A,B是 SQL 结果); 也就是 A = B
or A = A;

条件 where exist 结果 (B, A 注:这里的A,B是 SQL 结果);
exist 一般都需要和子表进行关联,而且关联时,需要用索引,这样就可以加快速度。

条件 A = 结果 A;