gpt4 book ai didi

postgresql - 带限制的 Postgres 更新表

转载 作者:行者123 更新时间:2023-11-29 14:25:13 26 4
gpt4 key购买 nike

当我对更新语句使用限制时 Postgres 失败

我只想更新表的第一条记录

UPDATE test1 SET name="user101" LIMIT 1;

这在 postgres 中失败了,因为我正在使用限制;

我能做到

UPDATE test1 SET name="user101" 
WHERE ID =(SELECT ID FROM test1 LIMIT 1)

但是要使用上面的 sql,我应该知道列名 (ID),而在我的情况下我无权访问列名。

我需要一个不需要列名但只更新第一条记录的sql语句。

更新:

我正在使用 ruby​​ @db.exec(query) 来执行查询

我们将如下不同的 sql 语句传递给调用 @db.exec(query)

的方法
  1. 更新table1 set t1_name = "123"limit 1;
  2. 更新表 2 设置 something = "xyz"limit 1;
  3. 更新table3 set som = "abc"limit 1;

现在在调用 @db.exec(query) 之前

我想修改查询,使查询不使用 limit

在这种情况下,我可以访问要更新的表名和列名。但我无权访问任何其他列名 (ID)。

最佳答案

虽然我认为这种方法有一种非常难闻的味道(什么样的应用程序将随机行的更新发送到数据库),您可以为此使用始终可用的内部 ctid 列。

UPDATE test1 
SET name = 'user101'
WHERE ctid = (SELECT ctid FROM test1 LIMIT 1)

关于postgresql - 带限制的 Postgres 更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58610556/

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