当我在 MySQL 中的 select 语句中包含更多列时,输出不同

Different output when I include more columns to the select statement in MySQL

为什么 运行这两个查询得到的结果不同?如果我 运行 第二个我得到学分最少的课程,当我 运行 第一个我得到按 courseid

排序的课程
select min(credits), title, courseid 
from course 
group by title, courseid

select min(credits)
from course 

当你使用分组依据时,你使用了一种“过滤器”,在第一个查询中你按标题分组,然后所有相同的标题按课程 ID 分组,在第二个查询中你只 select 没有过滤的信用的最小值。

通过文档查看一个分组,也许还有一些像这样的图形示例:

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

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

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

因此,您的第一个查询 returns 为 course table 中 titlecourseid 的每个组合查询一行。该行包含该组合的最小值 credits。如果 course table 每个 courseid 只有一行,那么结果与 table.

的内容非常相似

第二次查询总计returns一行,最小积分数为全部

如果您想从中获得一个 的最小信用数,那么您不需要聚合查询。相反,您可以使用:

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