关于mysql的一个奇怪的问题

wang2679958237 2018-09-04 05:10:54



为什么查询出来的结果 id和courseName没有对应?
...全文
81 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wang2679958237 2018-09-04
  • 打赏
  • 举报
回复
Thank u
mingqing6364 2018-09-04
  • 打赏
  • 举报
回复
SELECT
*
FROM
score
WHERE
(courseName, grade) IN
(
SELECT
score.courseName,
Max( score.grade ) grade
FROM
score
GROUP BY
score.courseName
)

结果:
+----+------------+-------+-------+
| id | courseName | grade | stuid |
+----+------------+-------+-------+
| 1 | 数学 | 89 | 1 |
| 5 | 生物 | 99 | 2 |
| 9 | 数学 | 89 | 4 |
| 10 | 物理 | 89 | 2 |
+----+------------+-------+-------+
4 rows in set (0.04 sec)
wang2679958237 2018-09-04
  • 打赏
  • 举报
回复
查询各科最高成绩以及对应的id
mingqing6364 2018-09-04
  • 打赏
  • 举报
回复
group by courseName
仅仅按照课程名称分组,id既没有作为分组依据,也没有使用聚合函数(max、min、count、avg、sum、group_concat)
这种情况下,mysql会按聚集索引顺序获取第一行数据返回
其他数据库会报错
二月十六 2018-09-04
  • 打赏
  • 举报
回复
group by id,courseName

像楼主那种写法在mssql会报错,mysql这样写不报错不太理解……

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧