【发布时间】:2020-03-28 15:42:33
【问题描述】:
我目前正在阅读 Abraham Silberschatz、Henry F. Korth 和 S 的“数据库系统概念”。苏达山。
其中有个删除的例子,就是删除所有工资低于大学平均水平的导师的记录。
它们显示以下查询:
delete from instructor
where salary < (select avg(salary)
from instructor);
我认为内部选择查询是不相关的子查询!意味着它应该只执行一次然后外部选择查询。
但是他们对上面的SQL代码sn-p提供了如下解释:
delete 语句首先测试关系instructor 中的每个元组,以检查工资是否低于大学教师的平均工资。然后,所有未通过测试的元组(即代表工资低于平均水平的教师)都将被删除。在执行任何删除之前执行所有测试很重要——如果在测试其他元组之前删除了一些元组,则平均工资可能会发生变化,删除的最终结果将取决于删除的顺序元组已处理!
上面的文字表明内部选择查询是一个相关的子查询!意味着它执行内部子查询的每一行外部关系。
我不明白!
谁能告诉我,这是不相关还是相关子查询?为什么?
【问题讨论】:
标签: sql