【问题标题】:How can I insert a new database record in the middle of an existing table?如何在现有表的中间插入新的数据库记录?
【发布时间】:2015-12-14 07:57:33
【问题描述】:

我想在我的表中插入一个新突出显示的行,但之前已经存在一些数据。我该怎么办?

请在下面找到图片;

我想在 Rails 中使用 SQL 语句。

【问题讨论】:

  • 对输出进行排序:SELECT * FROM your_table ORDER BY Date
  • 你不能决定插入行的位置,但是你可以决定 SELECT 时返回的顺序。按日期订购。
  • SQL 表没有任何固有顺序。没有插入特定位置这样的事情。
  • 你无法控制插入记录的位置,但是你可以对SELECT的结果进行排序,也可以考虑在int数据类型中添加一列display_order,在插入时设置值,然后排序结果order by display_order ASC/DESC
  • 感谢您的回复。但我正在使用 Rails 应用程序以及如何更改我的迁移文件以获得所需的结果。等待您的回复....

标签: sql


【解决方案1】:

SQL 中的表没有定义的顺序(它们可能有,取决于具体的实现,但你不能指望它)。

如果你需要一定的排序,你必须在选择时对你的结果集进行排序。

因此,我可以看到两种可能性:

  1. 更新“缺失”行上方的每个 id,并使用新“释放”的 id 插入新行。这可能会破坏很多其他内容(对您的 ID 的引用也需要更新)。
  2. 引入一个定义排序的新列。这样,排序可以独立于行的 ID。

【讨论】:

  • 感谢您的回复。我采用了第一种方法并使其正常工作。
【解决方案2】:

我使用了以下方法;

User.find(previous id value).update_column(:id, new id value)

例如,第一行的id值为1,第三行的id值为2,将id值为3的高亮行放在中间。 首先我们将 id 值 = 2 更改为 4,然后将 id 值 = 3 更改为 2 因此结果。希望一切都清楚。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-02
    • 1970-01-01
    • 2014-01-01
    相关资源
    最近更新 更多