人们想象我有这张桌子:
人
该表的列是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
没有索引(自动增量),有可能吗?
答案 0 :(得分:2)
我很确定不是。从我的knowldege sql数据顺序不是关于插入的sequetional。我唯一的想法是每个插入都有一个时间戳并按时间戳排序
答案 1 :(得分:2)
如果不添加包含时间戳的列或表,则无法执行此操作。您可以添加时间戳列或创建包含ID和时间戳的另一个表,并同时插入到该表中。
答案 2 :(得分:2)
您无法对DBMS如何存储数据并在不指定order by
子句的情况下检索数据进行任何假设。即PostgreSQL使用MVCC,如果更新任何行,物理上将在表数据文件的末尾创建一个新行。使用普通select
会导致pg使用序列扫描方案 - 这意味着最后更新的行将作为最后一行返回。
答案 3 :(得分:1)
我必须同意其他答案,如果没有特定的字段/列,那么......这是一种不可靠的方式......虽然在我想之前我还没有一张没有索引的表... / p>
你需要一些东西来索引它,你可以使用许多其他方法和方法...例如,你使用某种形式的concat / join of strings,然后在以后拆分/分离查询结果。
- EDIT-- 你有什么理由不使用这些方法?时间/ AUTOINC
答案 4 :(得分:0)
在插入过程中不存储某种订单信息,数据库不会自动跟踪所有插入的记录及其顺序(这可能是一件好事;))。无法避免自动增量...即使使用时间戳,它们也可以保持相同的值。