select * from t1; +------+ | col1 | +------+ | 9 | | 8 | | -6ren">
gpt4 book ai didi

sql - SQL 标准对 UPDATE 中的 "dependent"条件有什么看法?

转载 作者:行者123 更新时间:2023-12-04 14:04:10 27 4
gpt4 key购买 nike

谁能告诉我根据标准,以下结果应该是什么(欢迎引用标准的正确部分)

> select * from t1;
+------+
| col1 |
+------+
| 9 |
| 8 |
| 10 |
+------+
> update t1
set col1 = col1 * 2
where col1 <= (select avg(col1) from t1);

重点是:最后一行是否得到更新,因为如果按顺序更新行并且为每行重新计算平均值,它会满足条件,还是不会更新,因为此语句更改的任何数据只会整个语句运行后可读吗?

编辑
而这个案子呢?
> select * from t1;
+------+------+
| col1 | col2 |
+------+------+
| 9 | 1 |
| 8 | 2 |
| 10 | 2 |
+------+------+
> update t1 p1
set col1 = col1 * 2
where col1 <= (select avg(col1)
from t1
where col2=p1.col2);

最佳答案

关于第一个查询,subquery首先执行,所以平均没有变化......

关于第二个查询,您在 UPDATE 中使用别名语句,但您以错误的方法使用别名。

UPDATE 中使用别名的正确和标准方法声明是:

UPDATE p1
set col1 = col1 * 2
from t1 p1
where col1 <= (select avg(col1)
from t1
where col2=p1.col2);

关于sql - SQL 标准对 UPDATE 中的 "dependent"条件有什么看法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9963012/

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