2010-05-19 24 views
3

有没有办法改变从数据库读取的订单数据?你知道,默认顺序是它们是从插入到最新的第一个数据中读取的,所以有办法将它更改为latest-> first?如何确定订单数据是从MYSQL数据库中读取的?

+0

你的意思是像Order By? – Don 2010-05-19 14:37:04

+0

@Don - OP询问如何更改默认订单(您通过*而不是*使用'order by'获得的订单) – Matt 2010-05-19 14:42:54

回答

1

添加时间戳列到表(或者,如果你的ID自动递增,你也可以使用),并做ORDER BY DESC

默认情况下进入的顺序应该被视为任意。向用户显示数据时始终使用ORDER BY以避免混淆是一个好主意。

3

您无法更改默认的订单。这种行为甚至没有被服务器指定,它由表引擎指定。

例如,不管你插入InnoDB什么命令,它会一直拖欠的PRIMARY KEY秩序,这是不同的行为与MyISAM

+0

为什么downvote? – Matt 2010-05-19 14:41:52

5

默认顺序是,他们是从插入第一个数据读

最新不,这是不正确的。默认顺序取决于很多事情,不同的执行计划可能会导致不同的顺序。如果您不使用ORDER BY,则订单不确定。这意味着你不应该依赖它以插入顺序返回行,因为这并不总是如此。

如果你想依靠订单,你必须添加一个订单子句。如果你想回到最近插入的第一再添加一列insert_date行,插入和添加到您的查询时使用的值NOW()

ORDER BY `insert_date` DESC 

正如其他人也指出,如果你有一个自动增加主键然后你可以通过它来订购。

1

正如其他人指出:“ORDER BY”在您的SQL语句,虽然你的数据集将需要一个时间戳字段是用添加了新的数据集时的当前日期/时间设置。

然后,您应该能够从第一次下订单数据将持续,或从后到前(ORDER BY myTimestampField DESC)

1

SELECT * FROM {表名} ORDER BY ID DESC以上

假设您有一个ID字段随每个插入而递增。您可能还有一个可在ORDER BY语句中使用的'CreateDate'类型字段。

ORDER BY默认为升序排列,因此要获得支持最新>首先,使用DESC。

相关问题