gpt4 book ai didi

PostgreSQL - 按存储顺序检索项目

转载 作者:行者123 更新时间:2023-11-29 12:28:51 33 4
gpt4 key购买 nike

伙计们,我有下表:

CREATE TABLE IF NOT EXISTS users(
userid CHAR(100) NOT NULL,
assetid text NOT NULL,
date timestamp NOT NULL,
PRIMARY KEY(userid, assetid)
);

在我运行一些插入查询后,例如:

INSERT INTO users (userid, assetid, date) VALUES ( foo, bar, now() );

我想检索记录,以便它们存储在数据库中。但是,我似乎没有按顺序取回记录。

我应该如何修改我的检索语句?

SELECT * FROM users WHERE userid=foo;

我希望结果按照存储的顺序排序:)

谢谢!

最佳答案

为了扩展 Mark 的正确答案,PostgreSQL 不保留行时间戳,也不按任何特定顺序保留行。除非您使用包含插入它们的时间戳的列定义表,否则无法按照插入顺序选择它们。

PostgreSQL 通常会按照它们被插入的顺序返回它们,但这只是因为它们恰好是在磁盘上的顺序。当您在表上执行 updatedeletes 然后稍后 insert 时,这将发生变化。 vacuum full 等操作也会改变它。如果没有明确的 order by 子句,您永远不应该依赖订单。

此外,如果您希望插入时间戳因事务中的行而异,您可以使用 clock_timestamp 而不是 now()。另外,请使用 SQL 标准 current_timestamp 而不是编写 now()

关于PostgreSQL - 按存储顺序检索项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32699470/

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