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