微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当我在 MySQL

如何解决当我在 MySQL

为什么我在运行两个查询时没有得到相同的结果?如果我运行第二个,我会得到最少学分的课程,当我运行第一个时,我会得到按 courseid 订购的课程

select min(credits),title,courseid 
from course 
group by title,courseid

select min(credits)
from course 

解决方法

当您使用 group by 时,您使用的是一种“过滤器”,在第一个查询中您按标题分组,然后所有相同的标题按 courseid 分组,第二个您只选择学分的最小值没有过滤。

按文档查看一个组,也许可以使用一些像这样的图形示例:

https://www.geeksforgeeks.org/sql-group-by/

,

聚合查询是在 group by 中具有 select 或聚合函数的任何查询。

聚合查询每组返回一行,其中“组”定义为 group by 子句中键值的唯一组合。如果没有 group by 子句,则 所有 行将被视为一个组并返回一行。

因此,您的第一个查询为 title 表中 courseidcourse 的每个组合返回一行。该行包含该组合的最小值 credits。如果 course 表每个 courseid 只有一行,则结果与表的内容非常相似。

第二个查询总共返回一行,所有行的信用数最少。

如果您想获得一个并且具有最少的学分数,那么您不需要聚合查询。相反,您可以使用:

select c.*
from course c
order by c.credits
limit 1;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。