MySql - 管理数据的显示顺序

时间:2010-09-03 06:46:45

标签: php mysql

好的,一个信息数据库。专用于显示顺序的列。如果我进行更改,例如移动行,或者如果我删除行或向数据库的末尾添加行,则向上或向下移动。

我希望按顺序保持显示顺序,没有间隙。比如1-2-3-4-5-6-7-8-9如果删除行1-2-3-4-5-7-8-9如果我想在第5行之后添加一行(在第6位),我可能会遇到问题。我认为保持这些数字顺序没有差距。是对的吗?我试过了:

ALTER TABLE data DROP id;

ALTER TABLE data ADD id int(10) AUTO_INCREMENT;

我知道这不是一件好事。此外,在测试时,它没有保持我的数据有序。

管理展示订单的任何想法?我是否必须将所有数据加载到阵列中并在那里进行管理?好像MySql已经有了解决方案???

4 个答案:

答案 0 :(得分:1)

我担心AUTO_INCREMENT字段不会对它们重新排序,您最好添加一个排序字段。

答案 1 :(得分:1)

为此目的,SQL具有ORDER BY语法。

除非在select语句中指定了ORDER BY,否则任何reational数据库都不会保存存储数据的顺序或检索数据的顺序。

如果您只想保留输入数据的顺序,那么一个简单的时间戳就可以实现这一点。

答案 2 :(得分:0)

出于这个原因,查询中有"ORDER BY" command

SELECT * FROM 'TABLE' WHERE 'TABLE.FIELD' = 'XY' ORDER BY 'TABLE.FIELD';

答案 3 :(得分:0)

我制定的解决方案是有一个用于按顺序显示数据的列。我使用AUTO_INCREMENT列来跟踪每个条目的specific_id

列是:auto_id | display_order | specific_id | category | subject | text

输入新数据时。我INSERT到表格末尾的新行。然后使用mysql_insert_id()我检索AUTO_INCREMENT号码,我使用SELECT MAX(display_order)获取display_order的高数量,然后使用我的数据获取UPDATE新行将AUTO_INCREMENT号码放入specific_id列,因为我确实需要/使用该号码。

使用display_order列作为参考,我可以将信息(specific_id | category | subject | text)移动到任何地方。我选择移动信息,而不是仅仅更改display_order编号,并将display_order列按顺序(大部分)保留在AUTO_INCREMENT列中。只是个人偏好。

删除行时。再次,使用display_order我将信息向下移动(数字),然后移动DELETE表格的最后一行。再次,个人偏好,保持整洁。

好处是:1)一切都在一张桌子里。 2)我使用AUTO_INCREMENT数字为每个数据条目提供specific_id,这是必须的。 3)display_order列中没有间隙,无需查找/引用,计算位置和混乱信息。

其他说明:在引用数据块时,我使用ORDER BY display_idORDER BY display_id DESC来保持秩序。