是否可以使用INSERT命令将数据插入表的中间部分?

iOS*_*com 3 mysql sql database insert

例:

INDEX | 一些数据

1 | some_data1

3 | some_data3

4 | some_data4

5 | some_data5

我想做一个INSERT来添加---> 2 | some_data2.是否有SQL命令或某种方式执行此操作?

[编辑]
好的.也许如果我解释每件事我想要完成什么,你会明白我为什么要做我想做的事情.我在php中创建一个Web管理页面,只显示数据库表中的数据.现在这些显示的行是"可拖动的".例如,您可以将第2行拖到第4行.现在在"mouseup"事件中,我想将新订单保存在数据库中.

1 | data1 -------------------------> 1 | data1
2 | data2 -------拖动后-----> 3 | data3
3 | data3 -------------------------> 4 | data4
4 | data4 -------------------------> 2 | data2
看到我的问题?我不能仅仅更新INDEX列中拖动的一个值的值.我将不得不更新拖过的所有值.3必须成为一个2,4一个3和2必须成为新的4.这是太多的SQL更新(特别是如果表更大).所以我想删除第2行并将其插入正确的位置.

Pau*_*ier 6

只需插入数据; 桌子没有从根本上订购.当您在select语句中自己定义表结果时,会发生唯一的表结果排序.

编辑:如果您想要的是单独订购,那么您可以通过单独的"订单"列获得良好的服务.我建议将其设置为float类型,这样您就可以在其他条目之间的任何位置插入条目而无需任何更新.例如,如果条目"A"的"order"列值为"1",条目"B"的"order"列值为"2",并且您要插入条目"C",以便它显示在条目之间" "和"条目"B",只需将"order"列值设置为1.5(1 + 2/2.0)即可插入.这样,您可以在"订单"列中使用"订购依据"执行选择,事情应该按照您想要的方式进行.Floats是解决这个问题的一个相当不错的解决方案,因为'

  • 提及SQL表是基于集合并且不是"自定义"的+1.重要的概念! (2认同)

Ben*_*Lee 5

您应该能够像常规一样添加它:

INSERT INTO some_table (index, some_data) VALUES (2, 'some_data2')
Run Code Online (Sandbox Code Playgroud)

插入后,如果您确实希望按索引排序行,请运行以下命令:

ALTER TABLE some_table ORDER BY index;
Run Code Online (Sandbox Code Playgroud)

一般来说,订单实际上并不重要.您应该在找到的列上使用索引,在获取结果集时使用ORDER BY.您不应该依赖表中行的插入顺序来进行优化或排序.