例如,我有一个名为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
答案 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;