0

可能重复:
按自然顺序选择底部行

人们想象我有这张桌子:

表的列是 NAME 和 ID

我插入这个

insert into persons values ('name','id');

insert into persons values ('John','1');

insert into persons values ('Jack','3');

insert into persons values ('Alice','2');

如何通过插入选择此信息顺序?我的查询想:

姓名 ID

姓名编号

约翰 1

杰克 3

爱丽丝 2

没有索引(自动增量),有可能吗?

4

5 回答 5

2

order by在没有指定子句的情况下,您不能对 DBMS 如何存储和检索数据有任何假设。即 PostgreSQL 使用 MVCC,如果你更新任何行,物理上将在表数据文件的末尾创建行的新副本。使用plainselect会导致pg 使用序列扫描方案——这意味着最后更新的行将作为最后一个返回。

于 2012-06-05T20:25:22.370 回答
2

如果不添加包含时间戳的列或表,这是不可能的。您可以添加时间戳列或创建另一个包含 ID 和时间戳的表并同时插入其中。

于 2012-06-05T20:09:25.597 回答
2

我很确定它不是。据我所知,sql 数据顺序在插入方面不是连续的。我唯一的想法是每个插入都有一个时间戳并按该时间戳排序

于 2012-06-05T20:08:08.227 回答
1

我必须同意其他答案,如果没有特定的字段/列来执行此操作...好吧,这是一种不可靠的方式...虽然在我认为之前我实际上从未有过没有索引的表..

您将需要一些东西来索引它,您可以使用许多其他方法和方法...例如,您使用某种形式的字符串连接/连接,然后稍后拆分/分离查询结果。

--EDIT-- 出于什么原因您不想使用这些方法?时间/自动

于 2012-06-05T20:15:45.797 回答
0

如果在插入期间不存储某种顺序信息,数据库不会自动跟踪曾经插入的每条记录及其顺序(这可能是件好事;))。无法避免自动增量......即使有时间戳,它们也可以保持相同的值。

于 2012-06-05T20:14:28.573 回答