是因为Exists是一个逻辑运算符,用于检查子查询是否返回任何行。当Exists子查询中的条件与外部查询中的条件匹配时,Exists返回true,否则返回false。因此,Exists返回的是一个布尔值,表示是否存在满足条件的记录。
相比之下,IN是一个比较运算符,用于检查某个值是否存在于一个给定的列表中。IN子句中的列表可以是一个值列表,也可以是一个子查询。当IN子查询返回的结果集中包含与外部查询中的条件匹配的值时,IN返回true,否则返回false。因此,IN返回的是一个布尔值,表示是否存在满足条件的值。
由于Exists是一个逻辑运算符,它只关心是否存在满足条件的记录,而不关心具体的值。因此,当Exists子查询中的条件与外部查询中的条件匹配时,Exists会返回true,即使子查询返回的结果集中有多个匹配的记录。
相反,IN是一个比较运算符,它关心具体的值是否存在于给定的列表中。因此,当IN子查询返回的结果集中有多个匹配的值时,IN只会返回一个true值,表示至少有一个匹配的值存在于列表中。
综上所述,SQL Exists返回的记录比IN多是因为Exists只关心是否存在满足条件的记录,而不关心具体的值。而IN关心具体的值是否存在于给定的列表中。
领取专属 10元无门槛券
手把手带您无忧上云