我想在表格中最多检索一列符合某些标准的列。我尝试了以下SQL
Select Name, Max(version) from table1 where name="Asdf";
我得到的结果集的名字比我在where子句中给出的名字多。您认为上述查询有什么问题?
提前谢谢
注意:其Sybase数据库
答案 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