gpt4 book ai didi

sql - oracle 更新关联查询

转载 作者:行者123 更新时间:2023-12-01 16:02:51 25 4
gpt4 key购买 nike

正确答案是什么?选择两个。

检查此 SQL 语句:

UPDATE orders o
SET customer_name = (
SELECT cust_last_name FROM customers WHERE customer_id=o.customer_id
);

哪两个是正确的?

  • A.子查询在执行UPDATE语句之前执行。

  • B. ORDERS 表中的所有现有行都会更新。

  • C.对 ORDERS 中每个更新的行执行子查询表。

  • D.即使子查询出现,UPDATE 语句也会成功执行选择多行。

  • E。该子查询不是相关子查询。

我知道 B 是正确的,但我认为所有其他选择都是不正确的。

  • A.子查询对外部查询返回的每一行执行,因此它应该在外部查询之后执行。

  • C.不是对于每个更新的行,而是对于外部的每一行查询返回。

  • D.我试过。它会导致错误 ORA-01427: 单行子查询返回超过一行

  • E。这是一个相关子查询。

最佳答案

考虑选项C:

C. The subquery is executed for every updated row in the ORDERS table.

你说:

NOT for every updated row, it is for every row that the outer query returns.

是的。子查询确实是针对外部查询中的每一行执行的(不考虑数据库应用的可能的优化)。并且外部查询中的每一行都会更新 - 正如您所发现的,因为您已经正确地选择了选项 B:ORDERS 表中的所有现有行都已更新

注意:您反对选项 A、D 和 3 的论点是有效的。

关于sql - oracle 更新关联查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60252753/

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