作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用的是 PostgreSQL 10.5,我有以下 SQL:
FOR temprow IN
SELECT o.objectid, o.nametag, cor.userseqno, cor.commseqno
FROM "commuserobjectrights" as cor
LEFT JOIN "object" as o ON cor.objectid = o.objectid
WHERE o.nametag LIKE 'commission.video_questions'
LOOP
INSERT INTO u commuserobjectrights (objectid, commseqno, userseqno, access)
VALUES (temprow.objectid, temprow.commseqno, temprow.userseqno, TRUE);
END LOOP;
抛出以下错误:
ERROR: syntax error at or near "FOR" Position: 3
我以前从未使用过循环,但根据文档,postgresql 应该支持这些类型的循环。是的,我检查并仔细检查了所有表名和列名的拼写是否正确。
最佳答案
您不能在过程代码之外使用 FOR
循环。但是,一般来说,Postgres(和 SQL)已经过优化,可以进行基于集合的操作。因此,您可以将其表述为 INSERT INTO ... SELECT
:
INSERT INTO commuserobjectrights (objectid, commseqno, userseqno, access)
SELECT o.objectid, o.nametag, cor.userseqno, TRUE
FROM "commuserobjectrights" as cor
LEFT JOIN "object" as o ON cor.objectid = o.objectid
WHERE o.nametag LIKE 'commission.video_questions';
关于postgresql - 如何避免 postgresql 中 FOR 循环中的语法错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52151855/
我是一名优秀的程序员,十分优秀!