如何阻止数据库表排序值

时间:2016-08-19 21:33:51

标签: mysql sql database phpmyadmin

这是mysql中的一个表,010预计将是表中的最后一个。我该如何处理?数据库会自动对输入的值1

进行排序

3 个答案:

答案 0 :(得分:0)

数据库表是未排序的集合,没有内在的顺序。如果您想按特定顺序获取行,则必须使用order by子句明确指定行:

SELECT   *
FROM     mytable
ORDER BY CAST(visitorsid AS INTEGER)

答案 1 :(得分:0)

您可以按字符长度的长度指定字符字段的顺序,而不是标准的整理顺序。

SELECT * FROM MY_TABLE ORDER BY LENGTH(visitorid);

我应该通过前导0加上我假设这不是数字字段。

答案 2 :(得分:0)

您要求的基本上是“显示输入序列中的行”,严格来说,这在SQL中是未定义的。

我通常对我的表做的是添加一个ID列,如:

create table foo (id int not null primary key auto_increment, ...rest of columns...)

这样,行可以按输入顺序排序。它也不一定是主键 - 任何auto_increment列都可以工作。 (auto_increment是一个MySqlism,顺便说一下,其他RDBMSes还有其他基本相同的语法)。

BTW,严格来说,你的专栏正确排序 - 看起来像是char或varchar列,因此它按字典顺序而不是数字排序。如果您希望移植数据,我希望您可以执行以下操作:

insert into new_table
select * from old_table order by CAST(Visitorsid AS UNSIGNED)

至少我认为有效...没有MySQL命令行方便尝试:-)。祝你好运!

(已更新以修复MySQL语法并使用正确的列名称)