Max和Where子句

时间:2013-04-12 13:43:42

标签: sql sybase

我想在表格中最多检索一列符合某些标准的列。我尝试了以下SQL

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

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

提前谢谢

注意:其Sybase数据库

4 个答案:

答案 0 :(得分:5)

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

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

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

select Name, Max(version) 
from table1 
group by Name

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

Select top 1 name, version 
from table1
where name = 'Asdf'
order by version desc

答案 3 :(得分: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