我目前通过DBeaver使用PostgreSQL
在我的"gia_su_pro"表中,在"course_id"字段中,当前有一个单元格包含多个课程ID,并由段落分隔符¶(Pilcrow符号)分隔。我想分隔课程ID并为其创建一个新记录,其值与之前相同,但不想更改"gia_su_pro"表中的原始数据
我是这么做的:
- 我把pilcrow符号改成逗号,这样我就可以把它分开,但在改变的步骤上卡住了。
- 我创建了一个名为"gia_su_pro_virtual"的CTE,其中包含"gia_su_pro"表中的所有数据,然后进行更新,将Pilcrow符号更改为逗号。
- 结果返回错误关系"gia_su_pro_virtual"不存在
我检查了PostgreSQL文档,他们说我可以使用带有UPDATE关键字的CTE,所以我不知道我做错了什么。
请帮助我分离课程ID,并使用与以前相同的值为其创建新记录,但不要更改"gia_su_pro"表中的原始数据
下面是我的代码:
with gia_su_pro_virtual as (
select *
from gia_su_pro gsp)
update gia_su_pro_virtual gsv
set gsv.coure_id = REPLACE(gsv.course_id, E'\u00B6', ',')
以下是错误结果:(https://i.stack.imgur.com/FnUhG.png)
这里是我从postgre网站上读到的文档(https://i.stack.imgur.com/8EzBO.png)
1条答案
按热度按时间egmofgnx1#
Postgres不支持可更新的公共表表达式(尽管一些其他数据库,如SQL Server,确实支持它们)。在这种特殊情况下,您应该直接对表进行更新: