首页 > 解决方案 > 在表中的行之间插入数据

问题描述

我有一张大约有 1,000,000 条记录的表。我注意到,当我插入一条记录时,它最终没有被插入,而是被插入到两者之间

例子

我的桌子(测试)

矽。 姓名。 地址。
1. 测试。 1/2 测试
2. 测试。 3/4测试

Si 创建了唯一索引但未定义主键

所以当我插入表格时

Insert into testing (si,name,address) Values (3., Test., 5/6 test)

我得到以下

矽。 姓名。 地址。
1. 测试。 1/2 测试
3. 测试。 5/6测试
2. 测试。 3/4测试

我该如何解决这个问题。

我所知道的是,该值通常会在最后插入,但仅此而已。

标签: sqloracleoracle12c

解决方案


你的“问题”根本不是问题。

这是我们正在谈论的关系数据库。把它想象成一个装满苹果的篮子。当你把一个新苹果放进去时,你怎么知道在这个之前插入的是哪一个呢?你不能。

向关系数据库表中的插入也是如此——可以在任何地方插入行。

如果要按特定顺序返回行,则必须使用该ORDER BY子句。当然,还有一些东西可以用来对数据进行排序。在您的示例中,这就是si列。

因此,而不是

select * from testing;

select * from testing order by si;

这就是它的工作原理;你无能为力。有时它看起来好像您可以省略order by,但这是一种误导,您不能依赖它。始终使用ORDER BY.


推荐阅读