【问题标题】:mysql prevent insert row auto sortingmysql防止插入行自动排序
【发布时间】:2011-10-24 05:07:32
【问题描述】:

我使用 Codeigniter 对 mysql 执行插入(不确定是否相关),插入后我有表列和一些这样的数据:

[invoice_id][product_id][unit_cost][quantity] [42][1][50][2] [42][2][100][3] [42][5][45][1]

问题是mysql先按invoice_id自动排序,然后像上面的product_id。

在我插入它们之前,我的发票项目列表位置是:

[42][5][45][1] [42][1][50][2] [42][2][100][3]

我不想要任何这种自动排序,因为当我检索它们时,它们就像数据库中的列表而不是发票中的列表。我不认为我可以对特定列使用排序,因为它们首先都是随机的。

我只能开始考虑添加另一列 [position] contains number 只是为了以后对其进行排序,还是没有更好的方法?

提前感谢您的回复。

【问题讨论】:

  • 桌子上有索引吗?

标签: mysql codeigniter sorting insert


【解决方案1】:

除非您指定 ORDER BY 子句,否则无法保证 MySql 结果集的顺序。如果您无法使用已有的参数进行排序,唯一的方法是在表中添加另一列。通常这将是一个自动增量整数字段。然后您就可以按 id 排序,并按照输入的顺序返回行。

【讨论】:

  • 您创建的每个表都应该有一个唯一的 id 字段,该字段会自动递增。但在这种情况下,还可以考虑使用带有 unix 时间戳的“time_created”字段,并按照产品添加到发票的时间对查询进行排序。事情发生的时间通常是存储有用的信息,也适用于排序。
  • @AndrewR 我想我会再添加一列。
猜你喜欢
  • 2020-08-14
  • 2011-05-28
  • 2011-08-20
  • 2013-12-28
  • 1970-01-01
  • 2019-03-21
  • 2013-03-23
  • 1970-01-01
相关资源
最近更新 更多