即使它存在性能问题,我是否可以知道相关子查询的用法?使用相关子查询
Q
使用相关子查询
4
A
回答
4
那么,首先它没有性能问题。它就是这样,并且考虑到硬件和数据库结构的性能限制,它将尽可能地执行。
至于什么是有用的,它只是一种表达特定逻辑条件的方式。
6
一个常见的用法例如:各部门的最新雇用的雇员(S)的显示细节:
select e.deptno, e.empno, e.ename, e.hiredate, e.sal
from emp e
where e.hiredate = (select max(e2.hiredate)
from emp e2
where e2.deptno = e.deptno -- the correlation
);
+0
这是我在SO中看到的关于使用相关子查询的最清楚的用法。 – dbustosp 2017-06-21 03:12:23
2
相关子查询中使用的一些必须采取行动上依赖于一个在查询中的每一行或来自该行的更多值。
所以,举例来说,如果你想知道包括基于东西在另一个表中发生的结果集的行,你可以这样做:
UPDATE YourTable YT SET YourColumn =
(SELECT SUM(SomeColumn) FROM SomeOtherTable SOT
WHERE SOT.ID = YT.ID AND SOT.SomeField <> YT.SomeField)
:
SELECT * FROM YourTable YT WHERE
EXISTS (SELECT * FROM SomeOtherTable SOT WHERE
SOT.ID = YT.ID AND SOT.SomeInteger BETWEEN YT.LowInteger AND YT.HighInteger)
在UPDATE
同样
有时候这些查询可以用标准的JOIN写,但有时候不能。
相关问题
- 1. 使用相关子查询
- 2. 相关子查询
- 3. 相关子查询
- 4. 使用ICriteria的NHibernate相关子查询
- 5. 使用SQL的相关子查询
- 6. 如何用非相关子查询替换相关的子查询?
- 7. PROC SQL子查询/相关查询
- 8. LINQ的相关子查询
- 9. 相关的mysql子查询
- 10. SQL - 相关子查询
- 11. TSQL子查询相关
- 12. 相关子查询 - Codeacademy
- 13. MySQL相关子查询FROM
- 14. SQL - 相关子查询
- 15. 相关子查询,oracle sql
- 16. MySQL相关子查询
- 17. JPA @NamedQuery相关子查询
- 18. mySQL相关子查询
- 19. 相关子查询的MySQL
- 20. SQL相关子查询
- 21. 使用相关子查询更新查询
- 22. 如何使用大查询复制相关子查询
- 23. 在主要查询中使用相关子查询的值
- 24. 如何查询使用相关子查询的聚合值?
- 25. MySQL的:相关子查询选择类型关联子查询
- 26. 相关子查询不起作用
- 27. SQLAlchemy:单向关系,相关子查询
- 28. SQL脚本,有关相关子查询
- 29. 相关子查询SELECT子句
- 30. 相关子查询如何通过外部子查询“循环”?
为什么它不会有性能问题,因为它首先在外部查询中查找记录,然后将其传递给内部查询,然后内部查询将根据再次外部查询选择预期结果而给出一些结果...... – hrishi 2009-11-25 10:57:33
@hrishi:因为这不是它所做的。 SQL是声明式的,所以你可以编写你想要的结果,而不是通过操作来获得结果。确定如何检索结果是查询优化器的一项工作。 – erikkallen 2009-11-25 11:06:33
你所描述的几乎是一个加入。优化过程的查询转换阶段可以将相关的子查询转换为连接,并且可以实现为散列连接或嵌套循环(等等)。对非常大的未索引表的相关子查询可能是一个性能问题,但这是因为连接效率低下,并不是因为用SQL指定它的语法意味着数据库操作本身不够高效。 – 2009-11-25 11:06:37