我想在mysql数据库中存储一些记录。记录有一个日期列。我想将它们存储在该日期列的排序顺序中。
例如,日期 27 / sep / 2011 的记录在日期 26 / sep / 2011的记录顶部存储作为第一行 as:
ID_1,name_1,27 / SEP / 2011
ID_2,name_2,26 / SEP / 2011
如果未来日期有新记录,则会将其插入到顶部。
我不想在通过desc使用select来使用select时对它们进行排序。 我希望它们按排序顺序直接插入db。
怎么做?
感谢...
答案 0 :(得分:1)
你可以通过添加另一个表来实现这一点 - 将所有记录插入到该表中(当前和新表)然后执行并插入如下:
INSERT into newtable
select * from temptable
order by temptable.date
你为什么需要这样做?为什么不在查询中使用orderby?
正如下面的评论所指出的那样 - 每次都需要截断新表
答案 1 :(得分:1)
当人们想要确定存储记录的物理顺序时,我总是感到惊讶。 基本上,出于多种原因,这是一个可怕的想法。
1)记录的物理存储方式不应该是您关注的问题。
2)如何呈现记录应该是您关心的问题。这就是我们内置ORDER BY的原因。
3)确定物理存储应该由该领域的专家来完成,因为它具有性能影响 - 这本身就是一个主题,我不会详细介绍。
基本上,担心按排序顺序获取数据,而不是按排序顺序获取数据。
为什么这是一个坏主意的原因是因为你将篡改永远不是一个好主意的主键。最重要的是,每次插入内容时都必须重新排序记录。只是不要重新发明热水。
答案 2 :(得分:0)
您无法选择插入行的位置。
以下是一种可能的解决方案:MySQL syntax for inserting a new row in middle rows?