每当我手动将数据插入我的sql数据库时,它都不会自动求助。这是一个小小的不便,但它仍然存在。
此外,未来的问题快速逼近。它按数字排序,但只能按第一个数字排序。在每个条目的开头是一个数字,这是我想要排序的。我快速接近百位数字,将根据第一位数字在20位下进行排序。
答案 0 :(得分:2)
SQL数据库中没有“自动排序”这样的东西。您必须在每个查询中指定所需的ORDER BY
。
表中的数据本质上是未排序的。某些数据库会根据聚簇索引对磁盘上的行进行排序,但在您编写的查询中依赖于这些行将导致草率和脆弱的查询。
答案 1 :(得分:2)
如果您正在使用phpMyAdmin,并且每次查看表时都希望对事物进行排序,请执行以下操作:
现在,每次回到该表时,都会按照您选择的方式对其进行排序。
答案 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