已知:select b.full_name,b.obj_id,b.name,('port-'||row_number()over(partition by b.par_card order by null)) as a from mw_app.t_eqp_port b where b.name is null; ,怎么用update语句将a列中数据更新到name列
时间: 2024-03-21 17:44:24 浏览: 54
可以使用子查询来实现将查询结果中的 a 列更新到 name 列,具体的 update 查询如下:
```
UPDATE mw_app.t_eqp_port
SET name = (
SELECT a
FROM (
SELECT ('port-'||row_number()over(partition by b.par_card order by null)) as a
FROM mw_app.t_eqp_port b
WHERE b.name is null
)
WHERE mw_app.t_eqp_port.obj_id = b.obj_id
)
WHERE name is null;
```
这里先用一个子查询获取查询结果中的 a 列,再将其更新到表 mw_app.t_eqp_port 的 name 列中。需要注意的是,子查询中的 obj_id 字段需要和更新语句中的 obj_id 字段匹配,保证更新的是同一条记录。另外,更新语句中的 where 子句可以仅选择 name 字段为空的记录进行更新。
相关问题
解释一下 select b.full_name,b.obj_id,b.name,('port-'||row_number()over(partition by b.par_card order by null)) as a from mw_app.t_eqp_port b where b.name is null;
这是一个 SQL 查询语句,对表 mw_app.t_eqp_port 进行查询,查询语句的解释如下:
1. select b.full_name,b.obj_id,b.name,('port-'||row_number()over(partition by b.par_card order by null)) as a
这部分是查询语句的选择部分,选择了表 mw_app.t_eqp_port 中的 full_name、obj_id、name 字段,同时使用 row_number() 函数生成一个编号作为别名为 a,编号的格式为 "port-1"、"port-2"、"port-3" 等等,这个编号是根据 par_card 字段进行分组,按照 null 排序。
2. from mw_app.t_eqp_port b
这是查询语句的来源部分,指明了查询的表为 mw_app.t_eqp_port,别名为 b。
3. where b.name is null
这是查询语句的条件部分,只选择 name 字段为空的记录。
阅读全文