首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过拥有和选择MAX()组之间的差异

问通过拥有和选择MAX()组之间的差异
EN

Stack Overflow用户
提问于 2017-06-27 14:41:59
回答 2查看 724关注 0票数 1

我对SQL很陌生,对以下两个查询之间的差异感到困惑:

选择MAX(版本),*从表中按位置选择primary_key = @key组 选择version,* FROM表,其中primary_key = @key组按版本=MAX(版本)的位置排列

假设表看起来像这样:

代码语言:javascript
复制
primary_key | version | location | data

如果我正确理解了这一点,那么两个查询都会在每个位置选择最大版本条目(在那些将@key作为主键的查询中)。那么,这两个查询之间有什么区别吗?还是仅仅在性能上有区别?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-27 14:48:56

你漏掉了表名

在使用聚合函数时,不建议使用* star (所有列),并且在大多数db中不允许使用

代码语言:javascript
复制
SELECT MAX(version) 
FROM your_table  
WHERE primary_key = @key 
GROUP BY location

SELECT version
FROM your_table
WHERE primary_key = @key 
GROUP BY location 
HAVING version = MAX(version)

这两种查询是不同的,因为在第二种情况下,生成的查询是筛选器,以匹配有条件。

有关于查询结果的工作(而不是直接在查询的行源上工作),是的,第二个操作比第一个.大多数情况下差别可能是不明显的。

票数 1
EN

Stack Overflow用户

发布于 2017-06-27 14:52:48

请参考下面的链接,可能有用:http://www.dofactory.com/sql/group-by

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44783207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档