일부 조건을 충족하는 테이블에서 최대 하나의 열을 검색하려고합니다. 나는 다음과 같은 SQL을 시도했다최대 및 Where 절
Select Name, Max(version) from table1 where name="Asdf";
내가 where 절에서 준 것보다 더 많은 이름을 가진 결과를 얻고있다. 위 질문에 대한 잘못된 점은 무엇이라고 생각하십니까?
사전에주 감사 : 그 사이베이스 데이터베이스
일부 조건을 충족하는 테이블에서 최대 하나의 열을 검색하려고합니다. 나는 다음과 같은 SQL을 시도했다최대 및 Where 절
Select Name, Max(version) from table1 where name="Asdf";
내가 where 절에서 준 것보다 더 많은 이름을 가진 결과를 얻고있다. 위 질문에 대한 잘못된 점은 무엇이라고 생각하십니까?
사전에주 감사 : 그 사이베이스 데이터베이스
당신은 집계 함수와 일반 열 선택을 혼합 할 수 없습니다.
select max(version)
from table1
where Name = 'Asdf'
을 시도하거나 모든 이름과 max(version)
얻을 수있는 group by
를 사용
Select Name, Max(version) from table1 where name="Asdf" Group by Name
을 당신은 당신의 선택에 이름 필드를 포함하지 않습니다. 만약 당신이 그것을 원한다면 ...
Select top 1 name, version
from table1
where name = 'Asdf'
order by version desc
그것은 때문이다 : 집계 함수를 처리 할 때 당신은 group by
절을 사용할 필요가
select Name, Max(version)
from table1
group by Name
이것은 당신이 찾고있는 데이터 세트를 돌려 줄 것입니다. "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 쿼리에 이러한 변경 사항을 확인