【发布时间】:2020-06-03 05:03:30
【问题描述】:
假设有桌子:
name | score
A 100
B 98
C 99
D 99
E 99
F 98
并请求 sql = 'select * from table order by score desc'
我知道订单将是 100、99、99、99、98、98,但 99 和 98 中有几个值。
我正在使用 MyIsam 并希望确保 99 和 98 中的顺序不会更改,即使我删除了一些元素。 例如,如果订单是 C->D->E,我删除了 D,那么我希望是 C->E 但没有 E->C。 当订单价值相同时,它有什么逻辑吗?
【问题讨论】:
-
无法保证具有相等值的行如何排序;就像如果查询中没有
ORDER BY,则无法保证行的排序方式。保证它的唯一方法是使用二级排序,例如ORDER BY score DESC, name ASC -
即使删除行
D,您也可以按列使用主键列以确保顺序。例如:在您的表中,如果主键中的名称列,那么您的选择查询将为select * from table order by score desc,name asc。
标签: mysql sql sql-order-by myisam