各位,我有下表:
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;
我希望结果按照存储顺序进行排序:)
Thanks!
为了扩展 Mark 的正确答案,PostgreSQL 不保留行时间戳,也不按任何特定顺序保留行。除非您使用包含插入时间戳的列定义表,否则无法按照插入顺序选择它们。
PostgreSQL 通常会按照它们插入的顺序返回它们,但这只是因为它们在磁盘上恰好按照这个顺序。这会随着你的改变而改变update
放在桌子上,或者deletes
然后稍后insert
s。类似的操作vacuum full
也改变它。如果没有明确的指示,您永远不应该依赖该命令order by
clause.
另外,如果您希望事务中的行的插入时间戳不同,您可以使用clock_timestamp
代替now()
。另外,请使用 SQL 标准current_timestamp
而不是写作now()
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)