Mysql Max、 Where和 Group By 三个关键字同时使用 执行顺序 您所在的位置:网站首页 groupby顺序 Mysql Max、 Where和 Group By 三个关键字同时使用 执行顺序

Mysql Max、 Where和 Group By 三个关键字同时使用 执行顺序

2024-06-03 16:05| 来源: 网络整理| 查看: 265

问题产生:网上查阅这三个关键词同时使用,执行顺序是什么?回答的最多的却是Max Where 两个关键字的执行顺序。并且我发现很多回答不仅如出一辙,甚至是错误的!

直接先给出结论,再做阐述

1.Where 和 Group By 同时出现,Where -> Group By(不做分析) 2.Group By 和 Max 同时出现,Group By -> Max 3.Where 和 Max 同时出现,Where -> Max 4.Max Where 和 Group By 同时出现,Where -> Group By -> Max

其实第一和第二点没有什么争议,争议最大是第三点。网上很多回答是先Max 再where?真的是这样? 新建了一张test表 在这里插入图片描述

Group By 和 Max

sql基础不牢,我们初次使用Max 和Group By 的时候。发现最后查出的数据,不是我们想要的数据。怎么都有些想不明白。我下面还是用例子来解答这个疑惑。

需求: 查询出每科分数最高的人的详细数据。如果使用下面这个SQL SELECT * ,MAX(score) FROM test GROUP BY subject

查询结果 如下 在这里插入图片描述

分析:我们想要查询出语文最高分,数学最高分,英语最高分的人的详细数据。 但是最后的查询结果却不是我们想要的。每科最高分查出来了,但却对应不上人。 我们想要的是下面的数据 数学最高分,ID为5的李四的数据 英语最高分,ID为6的李四的数据 语文最高分,ID为7的王五的数据 为什么会是上面截图的结果喃? 因为这个SQL 是先执行Group By 分组操作,取分组后的取第一条数据,拼接Max(Score) select test.* from test join (select subject,max(score) as score from test group by subject) as b on test.subject = b.subject and test.score=b.score; Where 和 Max

同样是上面的那张表

例子: SELECT id ,MAX(id) FROM test where id = 4

你们觉得这个查询结果是什么样的? 在这里插入图片描述

如果Max 在Where 之前执行,那么查询结果。id应该为4 Max(id)为8。显然结果不是这样的。 而应该Where 在MAX 之前执行

您的点赞,是我更新的动力! 如有错误,望指正



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有