【问题标题】:Data inserting in between the rows in table在表中的行之间插入数据
【发布时间】:2021-10-14 00:03:18
【问题描述】:

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

例子

我的表(测试)

Si. Name. Address.
1. Test. 1/2 test
2. Test. 3/4 test

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

所以当我插入表格时

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

我得到以下内容

Si. Name. Address.
1. Test. 1/2 test
3. Test. 5/6 test
2. Test. 3/4 test

我该如何解决这个问题。

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

【问题讨论】:

    标签: sql oracle oracle12c


    【解决方案1】:

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

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

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

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

    因此,而不是

    select * from testing;
    

    你会

    select * from testing order by si;
    

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

    【讨论】:

    • 非常感谢您的精彩解释。我自己对这个问题做了一些研究,并找到了相同的答案。所以现在确认 ORDER BY 是必须的
    猜你喜欢
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    • 2020-08-11
    • 2012-07-18
    相关资源
    最近更新 更多