【问题标题】:How to insert a row in a table between two existing rows in Sql [closed]如何在Sql中的两个现有行之间的表中插入一行[关闭]
【发布时间】:2012-02-07 13:34:27
【问题描述】:

我有一个包含 9 条记录的表,但我想在第 5 条和第 6 条记录之间插入一行。

【问题讨论】:

  • 为什么?您不想在查询表时对结果进行排序吗?
  • 有什么用?表存储中行的物理排序对性能没有任何影响,而且在大多数数据库中,您所要求的都是不可能的。
  • 我认为他想移动,例如,列表中的歌曲在另一首歌曲之前的一个位置? ...
  • 你的问题还不清楚.. 共享表结构

标签: mysql


【解决方案1】:

如果你坚持

UPDATE mytable SET id = id + 1 where id > 5 ORDER BY id ASC

insert into mytable (id,..) values (6,...) 

【讨论】:

  • 您需要 ORDER BY id DESC 以便它自下而上递增并避免重复的 id 错误。
  • @postelrich 说的太对了!
  • 如果有人想在 sqlite 中执行此操作,请参考 stackoverflow.com/a/54758778/6671004
【解决方案2】:

一般来说,您不会在表格的特定位置插入一行。

如果行“顺序”很重要并且有一些特殊的语义,让数据在表结构中用适当的列反映这一点。

然后使用 SELECT ... ORDER BY ... 对行进行排序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 1970-01-01
    相关资源
    最近更新 更多