当我在 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 没有过滤的信用的最小值。
通过文档查看一个分组,也许还有一些像这样的图形示例:
聚合查询是在 select
中具有 group by
或聚合函数的任何查询。
聚合查询 returns 每组一行,其中“组”定义为 group by
子句中键值的唯一组合。如果没有 group by
子句,则将 所有 行视为一个组并返回一行。
因此,您的第一个查询 returns 为 course
table 中 title
和 courseid
的每个组合查询一行。该行包含该组合的最小值 credits
。如果 course
table 每个 courseid
只有一行,那么结果与 table.
的内容非常相似
第二次查询总计returns一行,最小积分数为全部行
如果您想从中获得一个 行 的最小信用数,那么您不需要聚合查询。相反,您可以使用:
select c.*
from course c
order by c.credits
limit 1;
为什么 运行这两个查询得到的结果不同?如果我 运行 第二个我得到学分最少的课程,当我 运行 第一个我得到按 courseid
排序的课程select min(credits), title, courseid
from course
group by title, courseid
select min(credits)
from course
当你使用分组依据时,你使用了一种“过滤器”,在第一个查询中你按标题分组,然后所有相同的标题按课程 ID 分组,在第二个查询中你只 select 没有过滤的信用的最小值。
通过文档查看一个分组,也许还有一些像这样的图形示例:
聚合查询是在 select
中具有 group by
或聚合函数的任何查询。
聚合查询 returns 每组一行,其中“组”定义为 group by
子句中键值的唯一组合。如果没有 group by
子句,则将 所有 行视为一个组并返回一行。
因此,您的第一个查询 returns 为 course
table 中 title
和 courseid
的每个组合查询一行。该行包含该组合的最小值 credits
。如果 course
table 每个 courseid
只有一行,那么结果与 table.
第二次查询总计returns一行,最小积分数为全部行
如果您想从中获得一个 行 的最小信用数,那么您不需要聚合查询。相反,您可以使用:
select c.*
from course c
order by c.credits
limit 1;