更新时SQL数据库不会自动排序?

时间:2011-10-17 01:59:30

标签: mysql sorting

每当我手动将数据插入我的sql数据库时,它都不会自动求助。这是一个小小的不便,但它仍然存在。

此外,未来的问题快速逼近。它按数字排序,但只能按第一个数字排序。在每个条目的开头是一个数字,这是我想要排序的。我快速接近百位数字,将根据第一位数字在20位下进行排序。

6 个答案:

答案 0 :(得分:2)

SQL数据库中没有“自动排序”这样的东西。您必须在每个查询中指定所需的ORDER BY

表中的数据本质上是未排序的。某些数据库会根据聚簇索引对磁盘上的行进行排序,但在您编写的查询中依赖于这些行将导致草率和脆弱的查询。

答案 1 :(得分:2)

如果您正在使用phpMyAdmin,并且每次查看表时都希望对事物进行排序,请执行以下操作:

  1. 选择表格
  2. 点击顶部菜单上的操作
  3. 在左上角,显示“Alter Table Order By”
  4. 选择要对其进行排序的方式,然后按“开始”
  5. 现在,每次回到该表时,都会按照您选择的方式对其进行排序。

答案 2 :(得分:0)

SQL数据库未排序 - 记录基本上是到达顺序。为了按排序顺序检索记录,您必须指定一个对它们进行排序的键。

答案 3 :(得分:0)

你说它不是排序(正如其他人所说的那样,没有原生的排序行为)但是接着你继续描述排序的方式,所以问题的一部分是有点混乱。

您描述的排序行为是正确的。您在文本类型字段中有数字,因此它们是按词法排序而不是数字排序。如果需要数字排序,则需要将该信息放在具有数字数据类型的字段中,并在ORDER BY子句中使用该字段。

答案 4 :(得分:0)

没有自动排序这样的东西。你必须自己排序。关于数字排序的问题,这是我的解决方案:

 SELECT tbl AS(
 select CAST(SUBSTRING(<field>',1,instr(<field>',' ') as INT),<field>
 //I would then use a UNION ALL statement, something like this

 SELECT CAST(SUBSTRING(<field>',1,instr(<field>',' ') as INT) as 'SortingField',<field>,A.*
 FROM <table> A
 WHERE <field> LIKE <regular expression to get fields beginning with numbers>
 UNION ALL
 SELECT 999999 as 'SortingField',<field>,A.*
 FROM <table> A
 WHERE <field> NOT LIKE <regular expression to get fields beginning with numbers>)
 ORDER BY tbl.SortingField

我的笔记本电脑中没有mySQL,但我希望这会有所帮助。这对我帮助很大。

答案 5 :(得分:0)

您可以使用

  **ORDER BY** yourcolumn DESC // Descending 

   *ORDER BY** yourcolumn ASC // Ascending