如果表具有相同的数据,那么mysql中的排序顺序是什么?

时间:2018-02-09 01:59:20

标签: mysql sql

例如,我有一个名为t_student的表,它有id,name,point 3字段。如果我选​​择这样的数据:

select * from t_student  order by point desc

和sameple数据是:

id   name    point

1    name1   99 

2    name2   99 

3    name3   90 

如果数据具有相同的点,应首先返回哪些数据:name1或name2? 根据mysql制定了什么规则? 如果我执行DELETE / INSERT / UPDATE操作并且最大点仍为99,那么sql是否总是使用以下sql返回相同的结果?

select * from t_student  order by point desc limit 0,1

1 个答案:

答案 0 :(得分:1)

如果两个或多个具有相同point值的记录之间存在联系,解决此问题的典型方法是在排序条件中添加另一个条件,例如

SELECT * FROM t_student ORDER BY point DESC, name;

在上面的查询中,我们试图通过查看name字段来打破平局。我们也可能使用id,或名称和ID的组合。

如果要返回具有最高point值的所有记录,则可以使用子查询:

SELECT *
FROM t_student
WHERE point = (SELECT MAX(point) FROM t_student)
ORDER BY name;