2

我想检索表中满足某些条件的最多一列。我尝试了以下 SQL

Select Name, Max(version) from table1 where name="Asdf";

我得到的结果集的名称比我在 where 子句中给出的名称要多。您认为上述查询有什么问题?

先感谢您

注意:它的 Sybase 数据库

4

4 回答 4

5

您不能混合使用聚合函数和普通列选择。尝试

select max(version) 
from table1 
where Name = 'Asdf'

或使用 agroup by获取所有名称及其max(version)

select Name, Max(version) 
from table1 
group by Name
于 2013-04-12T13:44:45.303 回答
2

group by处理聚合函数时需要使用子句:

Select Name, Max(version) from table1 where name="Asdf" Group by Name
于 2013-04-12T13:45:39.770 回答
1

这是因为您没有在选择中包含名称字段。如果你想得到那个然后尝试......

Select top 1 name, version 
from table1
where name = 'Asdf'
order by version desc
于 2013-04-12T13:46:12.450 回答
0

这应该会给您返回您正在寻找的数据集。它应该只为您提供名称“Asdf”的最大版本。如果这不是您想要的数据集,请提供示例数据集。

SQL查询:

Select Name, version 
from table1 
where name="Asdf"
having max(version) = version 

如果数据库中有不止一行具有相同的名称和最大版本,并且您只希望在数据集中返回一行。对

SQL查询:

Select top 1 Name, version 
from table1 
where name="Asdf"
having max(version) = version

或者如果你想做一组名称:

Select distinct Name, version 
from table1 
where name in ("Asdf", "ghjk")
having max(version) = version
于 2017-12-13T05:13:12.560 回答