如何确定从MYSQL数据库中读取订单数据?

时间:2010-05-19 14:34:19

标签: mysql phpmyadmin sql-order-by

有没有办法改变DB读取的订单数据?你知道,默认的顺序是它们是从插入到最新的第一个数据中读取的,所以有没有办法将它改为最新的>首先?

5 个答案:

答案 0 :(得分:5)

  

默认顺序是从插入最新

的第一个数据中读取它们

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

如果您想依赖订单,则必须添加order by子句。如果要先返回最近插入的行,然后添加列insert_date,请在插入时使用值NOW()并将其添加到查询中:

ORDER BY `insert_date` DESC

正如其他人也指出的那样,如果你有一个自动递增的主键,那么你可以按顺序排序。

答案 1 :(得分:3)

您无法更改默认排序依据。甚至服务器都没有指定此行为,它由表引擎指定。

例如,无论您在InnoDB中插入什么顺序,它都会始终在PRIMARY KEY上默认排序,这与MyISAM

的行为不同

答案 2 :(得分:1)

在表格中添加时间戳列(或者如果您的ID自动递增,您也可以使用它)并执行ORDER BY DESC

默认情况下输入的订单应视为任意。在向用户显示数据时始终使用ORDER BY以避免混淆是个好主意。

答案 3 :(得分:1)

正如其他人指出的那样:sql语句中的'ORDER BY',尽管您的数据集需要一个时间戳字段,该字段将在添加新数据集时使用当前日期/时间设置。

然后,您应该能够从头到尾或从​​最后到第一个订购数据(ORDER BY myTimestampField DESC)

答案 4 :(得分:1)

SELECT * FROM {tablename} ORDER BY id DESC

以上假设您有一个ID字段,每个插入都会增加。您还可以在ORDER BY语句中使用“CreateDate”类型字段。

ORDER BY将默认为升序,因此要获得最新的>首先使用DESC。