gpt4 book ai didi

postgresql - 如何避免 postgresql 中 FOR 循环中的语法错误?

转载 作者:行者123 更新时间:2023-11-29 14:08:56 24 4
gpt4 key购买 nike

我使用的是 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/

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