小编Nar*_*yck的帖子

PostgreSQL如何从匿名代码块返回数据?

我有一个表 mytable (id, "someLongURI", status, "userId") 和一个工作查询:

UPDATE          mytable
SET             status = 'IN_WORK'
WHERE           "someLongURI" IN (
    SELECT      "someLongURI"
    FROM        mytable
    WHERE       status = 'UNUSED'
    AND         pg_try_advisory_xact_lock(id)
    ORDER BY    id ASC 
    LIMIT       1
    FOR UPDATE 
)
RETURNING       id, "someLongURI";
Run Code Online (Sandbox Code Playgroud)

但现在我需要检查“userId”参数,并基于此选择现有行或更新(并接收更新的行)。类似的东西(在 MySQL 中这可以工作):

IF NOT EXISTS (
    SELECT          1
    FROM            mytable tbl
    WHERE           tbl."userId" = 123
)
THEN
    UPDATE          mytable tbl
    SET             tbl.status = 'IN_WORK',
                    tbl."userId" = 123
    WHERE           tbl."someLongURI" IN (
        SELECT      "someLongURI"
        FROM        tbl.mytable
        WHERE       tbl.status = 'UNUSED'
            AND …
Run Code Online (Sandbox Code Playgroud)

postgresql query

6
推荐指数
1
解决办法
7683
查看次数

标签 统计

postgresql ×1

query ×1