2013-04-12 4 views
2

일부 조건을 충족하는 테이블에서 최대 하나의 열을 검색하려고합니다. 나는 다음과 같은 SQL을 시도했다최대 및 Where 절

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

내가 where 절에서 준 것보다 더 많은 이름을 가진 결과를 얻고있다. 위 질문에 대한 잘못된 점은 무엇이라고 생각하십니까?

사전에

주 감사 : 그 사이베이스 데이터베이스

답변

5

당신은 집계 함수와 일반 열 선택을 혼합 할 수 없습니다.

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

을 시도하거나 모든 이름과 max(version) 얻을 수있는 group by를 사용

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

을 당신은 당신의 선택에 이름 ​​필드를 포함하지 않습니다. 만약 당신이 그것을 원한다면 ...

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

그것은 때문이다 : 집계 함수를 처리 할 때 당신은 group by 절을 사용할 필요가

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

이것은 당신이 찾고있는 데이터 세트를 돌려 줄 것입니다. "Asdf"라는 이름의 최대 버전 만 제공해야합니다. 이것이 원하는 데이터 세트가 아닌 경우 예제 데이터 세트를 제공하십시오.

SQL 쿼리 :

이 같은 이름을 가진 데이터베이스와 최대 버전에서 하나 이상의 행이고, 당신은 하나 개의 행이 데이터 집합에 반환하려는 경우
Select 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 
: 당신의 이름의 집합을 수행하려는 경우

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

또는 다음

SQL 쿼리에 이러한 변경 사항을 확인