查询 - 首先插入选择数据

时间:2012-06-05 20:05:46

标签: sql

  

可能重复:
  select bottom rows in natural order

人们想象我有这张桌子:

该表的

列是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');

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

NAME ID

名称ID

John 1

杰克3

Alice 2

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

5 个答案:

答案 0 :(得分:2)

我很确定不是。从我的knowldege sql数据顺序不是关于插入的sequetional。我唯一的想法是每个插入都有一个时间戳并按时间戳排序

答案 1 :(得分:2)

如果不添加包含时间戳的列或表,则无法执行此操作。您可以添加时间戳列或创建包含ID和时间戳的另一个表,并同时插入到该表中。

答案 2 :(得分:2)

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

答案 3 :(得分:1)

我必须同意其他答案,如果没有特定的字段/列,那么......这是一种不可靠的方式......虽然在我想之前我还没有一张没有索引的表...

你需要一些东西来索引它,你可以使用许多其他方法和方法...例如,你使用某种形式的concat / join of strings,然后在以后拆分/分离查询结果。

- EDIT-- 你有什么理由不使用这些方法?时间/ AUTOINC

答案 4 :(得分:0)

在插入过程中不存储某种订单信息,数据库不会自动跟踪所有插入的记录及其顺序(这可能是一件好事;))。无法避免自动增量...即使使用时间戳,它们也可以保持相同的值。