【问题标题】:What's the sort order in mysql if the table have the same data?如果表具有相同的数据,mysql中的排序顺序是什么?
【发布时间】:2018-02-09 01:59:19
【问题描述】:

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

select * from t_student  order by point desc

同样的数据是:

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

【问题讨论】:

标签: mysql sql


【解决方案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;

【讨论】:

  • 如果我忘记添加另一个名为 name 的排序文件,select sql 是否总是返回相同的结果?
  • 不...如果您仅按point 排序,则无法保证两个或多个记录应与点数相关联。
猜你喜欢
  • 1970-01-01
  • 2021-02-12
  • 1970-01-01
  • 2013-02-18
  • 1970-01-01
  • 1970-01-01
  • 2014-03-13
  • 2014-04-04
  • 2018-12-07
相关资源
最近更新 更多