栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

加入,分组,订购

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

加入,分组,订购

因此,我对以下查询的第一个问题是,group by子句是在order by之前执行的:

这不是问题。这就是SQL的定义方式及其操作方式。将

group by
创建一个新的行集和
order by
订单的行。

这里没有订购问题。有一个“ SQL理解”问题。您

order by
只对查询结果进行排序。这些结果由产生
group by
,并且联接的顺序与结果无关。

您正在使用一个称为“隐藏列”的MySQL扩展。在这种情况下,您有一个聚合查询,该查询中的

select
(或
having
orderby
子句)中的列不是聚合函数(
sum()
,等等)的一部分,也不是的一部分
groupby
。这是文档中的报价:

MySQL扩展了GROUP BY的使用,以便选择列表可以引用未在GROUP
BY子句中命名的非聚合列。这意味着前面的查询在MySQL中是合法的。您可以使用此功能来避免不必要的列排序和分组,从而获得更好的性能。但是,这主要在每个组的每个未聚合列中未在GROUP
BY中命名的所有值都相同时才有用。服务器可以从每个组中自由选择任何值,因此,除非它们相同,否则选择的值是不确定的。此外,通过添加ORDER
BY子句不能影响从每个组中选择值。选择值之后,将对结果集进行排序,并且ORDER BY不会影响服务器在每个组中选择哪个值。

大概是您想要与之关联的最新日期和用户。以下查询正确正确地执行了您想要的操作:

SELECT saved.recipe_id, max(saved.`date`) as MostRecentDate,       substring_index(group_concat(user.user_id), ',', 1) as MostRecentUserFROM user JOIN     saved     ON user.id = saved.user_idGROUP BY saved.recipe_idORDER BY max(saved.`date`) DESC;


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/568246.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号