首页 > 解决方案 > 从 PostgreSQL 表中弹出一行

问题描述

PostgresSQL 中的 Redis LPOP命令等效于什么?

例如,在下表中以包含两行 a 和 bthings的单列命名:thing

thing
----
a
b

原子地删除并返回表中的一行的正确命令是什么?使用上面的示例,我希望它返回单行 ('a') 并将其作为事务/锁的一部分删除。

标签: postgresql

解决方案


您可以使用数据修改公用表表达式来做到这一点:

with deleted as (
  delete from things
  where thing = 'a'
  returning *
)
select *
from deleted;

推荐阅读