UPDATE ud_bucket ub SET ub.objects_size = ( SELECT SUM( e.file_size ) AS cnt FROM `ud_file_res` e WHERE min_bucket_name = '001' ) WHERE min_bucket_name = ud_file_res.min_bucket_name 改成正确的
时间: 2023-12-14 18:05:15 浏览: 65
你的 SQL 语句中存在错误。首先,在 UPDATE 语句中使用了 ud_file_res 表,但是在 SET 子句中却没有对应的列。其次,在 WHERE 子句中也存在错误,因为你不能在 SET 子句中引用 ud_file_res 表。
正确的 SQL 语句应该是这样的:
```
UPDATE ud_bucket
SET objects_size = (
SELECT SUM(file_size) AS cnt
FROM ud_file_res
WHERE min_bucket_name = '001'
)
WHERE min_bucket_name = '001';
```
这个语句将会更新 ud_bucket 表中 min_bucket_name 为 '001' 的行的 objects_size 列,将其设为 ud_file_res 表中 min_bucket_name 为 '001' 的所有行的 file_size 列的总和。注意,这里将 WHERE 子句中的 min_bucket_name 直接写为 '001',因为 SET 子句中的对象已经指定了需要更新的行。
相关问题
UPDATE ud_bucket SET objects_size = ( SELECT SUM(file_size) AS cnt FROM ud_file_res WHERE min_bucket_name = '001' AS mName ) WHERE min_bucket_name = mName; 这样对吗
不对。在子查询中给 WHERE 子句设置别名是不允许的。因此,你需要对 SQL 语句进行一些修改。
正确的 SQL 语句应该是这样的:
```
UPDATE ud_bucket
SET objects_size = (
SELECT SUM(file_size) AS cnt
FROM ud_file_res
WHERE min_bucket_name = '001'
)
WHERE min_bucket_name = '001';
```
这个语句将会更新 ud_bucket 表中 min_bucket_name 为 '001' 的行的 objects_size 列,将其设为 ud_file_res 表中 min_bucket_name 为 '001' 的所有行的 file_size 列的总和。注意,这里将 WHERE 子句中的 min_bucket_name 直接写为 '001',因为 SET 子句中的对象已经指定了需要更新的行。
阅读全文