假设有一张table:
name | score
A 100
B 98
C 99
D 99
E 99
F 98
并请求sql = 'select * 从表中按分数说明排序'
我知道顺序是100,99,99,99,98,98但是99和98有几个值.
我正在使用MyIsam,希望确保即使删除了一些元素,99和98中的顺序也不会改变。例如,如果顺序是C-〉D-〉E,而我删除了D,那么我希望是C-〉E,但没有E-〉C。当有相同的顺序值时,是否有任何逻辑可以工作?
3条答案
按热度按时间c2e8gylq1#
上面的查询只按分数排序数据。如果你想按你提到的另一个字段排序数据,你也可以把那个字段添加到下面的查询中。你提到你想按名字排序(C〉D〉E)。所以我使用ORDER BY ASC。下面的查询会给予你你请求的输出。
hgtggwj02#
SQL表表示“无序”集合,因此,当
order by
键具有相同的值时,不存在“默认”排序。从技术上讲,这意味着SQL中的排序是 * 不稳定的 *。修复方法是添加一个或多个额外的键,以便每个组合都是唯一的。
对于您的示例数据,这大概可以使用
name
来处理:您还可以使用任何其他列(如果有)来唯一标识每行。这些键位于
score
* 之后 *。idfiyjo83#
SQLite以未指定的顺序存储表中的行。这意味着表中的行可能按照也可能不按照它们插入的顺序。
如果使用SELECT语句查询表中的数据,则未指定结果集中的行顺序。要对结果集进行排序,请在SELECT语句中添加ORDER BY子句,如下所示:
我希望这个link可以帮助你。