이와 같은 테이블이 있다고 가정 해보면 tbl_test라고합니다.
ID thedate actionid songid
1 2014-10-01 100 10
2 2014-09-30 100 10
3 2014-10-01 80 10
4 2014-09-30 80 10
5 2014-10-01 80 21
6 2014-09-30 100 21
이제 tbl_test에서 actionid = 100이고 최신 [thedate] 값이있는 모든 레코드를 찾고 싶습니다. 이 경우 최종 선택 결과가
(기존 테이블이 아닌 내가 원하는 결과) ID thedate actionid songid 1 2014-10-01 100 10 6 2014-09-30 100 21
질문, MS SQL Server에서 단일 선택 명령 만 사용하여 어떻게 할 수 있습니까?
각 노래의 최신 날짜를 반환하는 쿼리에 조인을 사용합니다.
select tbl_test.*
from tbl_test
join (select songid, max(theDate) maxDate
from tbl_test
where actionId = 100
group by songid) t on t.songId = tbl_test.songId and theDate = maxDate
where actionid = 100
이것은 테이블을 2 번만 통과하기 때문에 꽤 잘 수행 될 것입니다. 하나는 최근 날짜를 결정하는 내부 쿼리를위한 것이고 다른 하나는 일치하는 행을 출력하기위한 것입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다