select 명령을 사용하여 특정 항목에 대한 최대 날짜 값이있는 모든 레코드를 찾는 방법은 무엇입니까?

쇼후

이와 같은 테이블이 있다고 가정 해보면 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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관