如何在不使用临时表的情况下修改最近添加的行呢?例如,表结构如下:
id | text | date
我的当前方法是使用PostgreSQL特定的命令“returning id”进行插入,以便稍后可以使用更新表:
update myTable set date='2013-11-11' where id = lastRow
然而我有一种感觉,postgresql不仅仅使用最后一行,而是在遍历数百万条记录直到找到"id = lastRow"。如何直接访问最后添加的行?
如何在不使用临时表的情况下修改最近添加的行呢?例如,表结构如下:
id | text | date
我的当前方法是使用PostgreSQL特定的命令“returning id”进行插入,以便稍后可以使用更新表:
update myTable set date='2013-11-11' where id = lastRow
然而我有一种感觉,postgresql不仅仅使用最后一行,而是在遍历数百万条记录直到找到"id = lastRow"。如何直接访问最后添加的行?
update myTable date='2013-11-11' where id IN(
SELECT max(id) FROM myTable
)
补充mvb13的回答(由于我还没有足够的点数直接发表评论),有一个单词遗漏了。希望这能帮助某人节省一些时间来解决正确的语法,哈哈。
update myTable set date='2013-11-11' where id IN(
SELECT max(id) FROM myTable
);
id
列上有索引,Postgres(或任何其他DBMS)将不会遍历数百万行 - 它将执行相当快的索引查找。但真正的问题是:为什么您不能在原始插入语句中包含该日期值呢? - user330315