gpt4 book ai didi

mysql - SQL 查询与 EXISTS 的差异

转载 作者:行者123 更新时间:2023-11-29 19:46:06 25 4
gpt4 key购买 nike

我认为下面两个查询的工作原理是相同的。但返回的行有很大不同。您能解释一下为什么它们不同吗?

1.

SELECT de.dept_no from dept_emp de where de.dept_no
IN (select d.dept_no from departments d where d.dept_name='Finance');
17346 rows in set (0.02sec)

2.

SELECT de.dept_no from dept_emp de where EXISTS
( select d.dept_no from departments d where d.dept_name='Finance');
331603 rows in set (0.83sec)

最佳答案

EXIST 进行 true false 比较,第二个查询,如果您至少有一个名为“Finance”的部门,则子查询部分始终为 true,因此它会返回 dept_emp 中的所有行。假设至少存在一个名为财务的部门,则查询等于

SELECT de.dept_no from dept_emp de where TRUE

如果您想要更快地实现第一个查询中的内容,您应该使用 JOIN

SELECT de.dept_no FROM dept_emp de INNER JOIN departments s
on de.dept_no = d.dept_no
WHERE de.dept_no;

关于mysql - SQL 查询与 EXISTS 的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40969106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com