排序mySQL表的字段

时间:2010-07-16 20:12:26

标签: mysql database sorting

所以我想说我有一张桌子(比方说50行,50列),我偶尔会对它进行微小的编辑。虽然我意识到我可能(可能有些人会告诉我应该)使用查询来执行此操作,但我喜欢使用数据库管理程序(如Sequel Pro)手动进行更改。

所以我有两个问题:

如果在不指定显示结果的顺序的情况下执行查询,则会按照保存在数据库中的顺序进行查询。有没有办法在不手动切换行的情况下更改该订单(不是结果的顺序,表格中的顺序)?

此外,有没有办法自动对字段显示在表格中的方式(列顺序)进行排序?

我知道我应该只使用查询来更改值,但是(imo)如果表足够小,我发现在Sequel Pro这样的程序中找到行和列更容易,只需改变它。

另外,如果我的方法完全错误,请告诉我

4 个答案:

答案 0 :(得分:3)

http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

ALTER TABLE name ORDER BY something

它附带了一些重要的警告,并且不依赖于它们的任何其他东西,然后可能通过它进行排序的一些非常小的性能增益,只是为了方便您在没有订单的情况下运行任意选择的工具:

  

ORDER BY使您可以按特定顺序创建包含行的新表。请注意,插入和删除后,表不会按此顺序保留。当您知道主要是在大多数时间以特定顺序查询行时,此选项很有用。通过在对表进行重大更改后使用此选项,您可以获得更高的性能。在某些情况下,如果表格按您要稍后订购的列顺序排列,则可能会使MySQL更容易排序。

答案 1 :(得分:1)

  

如果在不指定显示结果的顺序的情况下执行查询,则会按照保存在数据库中的顺序进行查询。有没有办法在不手动切换行的情况下更改该订单(不是结果的顺序,表格中的顺序)?

没有

  

有没有办法自动对字段显示在表格中的方式(列顺序)进行排序?

数据库不关心列顺序。我被告知你可以从一些SQL IDE执行一个声明列表的声明,但是它正在创建一个新表和一个表。转移数据。

答案 2 :(得分:0)

引用OMG小马

  

如果在不指定显示结果的顺序的情况下执行查询,则会按照保存在数据库中的顺序进行查询。有没有办法在不手动切换行的情况下更改该订单(不是结果的顺序,表格中的顺序)?

     

没有

并添加,不仅可以改变它,而且

  

遵循将其保存在数据库中的顺序

不一定正确。除非您使用ORDER BY子句,否则不保证从数据库返回记录的顺序是任何特定顺序。

除了有一个方便的SQL脚本,可以按照你想要的顺序和列格式化你的表格,你可以在每次想要进行更改时简单地粘贴,我真的无法帮助你。

例如

Select ID, FirstColumn, ThirdColumn, SecondColumn from myConfigTable 
Order By FieldToOrder

答案 3 :(得分:0)

同样不可预测的订单。如果您希望按特定顺序排序,那就是ORDER BY的用途。要讽刺的是,你的问题就像是问:“如何在不使用方向盘的情况下让我的车左转?”即使有一些棘手的方法来实现这一点,重点是什么?

RE列顺序:MySQL具有SQL标准的扩展,允许您重新排列表中列的顺序。我相信它是

ALTER TABLE mytable MODIFY mycolumn varchar(50) AFTER othercolumn;

这会将“mycolumn”列移到“othercolumn”之后。我认为你必须在这个例子中给出数据类型 - varchar(50),但当然它可以是任何东西 - 即使它没有改变。

要将列设为第一列,请说“FIRST”而不是“AFTER”。

请注意,这不是标准SQL。大多数SQL引擎不允许您指定列顺序。一些纯粹主义者坚持认为不存在列顺序,即行是没有特定排序的列的集合。但是在现实生活中,数据库引擎必须以某种顺序存储它们,而且我从未见过“select *”没有以一致的顺序返回列的数据库。就个人而言,我经常编写从模式构建数据输入屏幕的通用代码,并按照它们从“select *”返回的顺序列出字段。我喜欢MySQL这种程序,因为它允许我在数据库中指定列顺序,而不必在其他地方将其分层,或者必须重建表以获得所需的顺序。

我不熟悉SQL Pro,但大多数工具都会尊重DBMS的列顺序。