首页 > 解决方案 > 可以选择 * 与选择所需的列给出不同的结果吗?

问题描述

我正在使用一个查询,它给出了苹果产品和三星产品的最大销售额之和。

我用 union 来显示这两个

Select max(amount) from abc 
Where product = 'apple'
Union 
Select max(amount) from abc 
Where product = 'samsung'

当我使用abc 与需要select *的所有列时,我得到不同的值。select columns

联合中是否存在需要的值select *和选择列不同的情况?

标签: sqlsql-server

解决方案


选择具有 Max(amount) 的列时,您必须按列分组。查询是:

select col1,col2...,Max(amount) from abc where product in ('apple','samsung') group by col1,col2...

如果您想要 Max amount 行的所有详细信息并按产品计数。我建议您进行以下查询:

select * from (SELECT *, ROW_NUMBER() OVER (PARTITION BY product ORDER BY amount DESC) AS rn FROM abc) tmp where product in ('apple','samsung') and rn=1

推荐阅读