[SQL] 행에서 최대 값을 얻기과 다른 테이블에 합류
SQL행에서 최대 값을 얻기과 다른 테이블에 합류
이 바보 경우 미안 해요, 난 정말이를 못을 시도 초보자입니다.
Table A:
ID Rank Name
1 100 Name1
1 45 Name2
2 60 Name3
2 42 Name4
2 88 Name5
Table B:
ID FileName
1 fn1
2 fn2
내가 원하는 것은
1 fn1 name1
2 fn2 name5
이것은 내 쿼리 외모가 좋아이지만, 그것은 나에게 결과의 여러 행을 (대신 최대의) 내가 할 때 가입 제공
select B.Id B.FileName,A.Name
FRom B
JOIN (
select A.Id, MAX(A.Rank)as ExpertRank
from A
group by A.Id
) as NewA on A.Id = B.ID
join B on A.Rank = NewA.Rank
서브 쿼리 나 조인을 수행에 문제를 얻을, 잘 작동합니다.
나는이 문제를 어떻게 해결합니까?
감사.
나는 SQL 서버 2008 R2가
마지막 하나는 내가 놓친 것입니다.
select B.Id B.FileName,A.Name
FRom B
JOIN (
select A.Id, MAX(A.Rank)as ExpertRank
from A
group by A.Id
) as NewA on A.Id = B.ID
join B on A.Rank = NewA.Rank
and A.Id = newA.Id
해결법
-
==============================
1.당신이 쓴 것은 전적으로 잘못 어디로 갔는지 취소하지만이 작업을해야되지는 그렇게 절에서의 누락했다
당신이 쓴 것은 전적으로 잘못 어디로 갔는지 취소하지만이 작업을해야되지는 그렇게 절에서의 누락했다
select B.Id, B.FileName, A.Name FRom B INNER JOIN A ON A.id = B.id INNER JOIN ( select A.Id, MAX(A.Rank)as ExpertRank from A group by A.Id ) as NewA ON a.Id = NewA.ID AND a.Rank = NewA.ExpertRank
여기에 작업을 참조하십시오
또한 대신 ROWNUMBER 사용할 수 있습니다
WITH CTE AS ( SELECT ID, RANK, Name, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY RANK DESC) rn FROM A ) SELECT b.Id b.FileName,cte.Name FROM b INNER JOIN cte ON b.id = cte.id and cte.rn = 1
여기에 작업을 참조하십시오
-
==============================
2.다음으로는 MAX () 대신에 조인 대답입니다 :
다음으로는 MAX () 대신에 조인 대답입니다 :
SELECT DISTINCT b.id, b.filename, a1.name FROM a a1 JOIN b ON b.id = a1.id LEFT JOIN a a2 ON a2.id = a1.id AND a2.rank > a1.rank WHERE a2.id IS NULL
동일한 ID에 대한 중복 순위가없는 경우에, 당신은 DISTINCT가 필요하지 않습니다.
-
==============================
3.개인적으로, 나는 아래 좋아한다. 단지 청소기 IMO (하지 않도록 성능에 대한 생각)
개인적으로, 나는 아래 좋아한다. 단지 청소기 IMO (하지 않도록 성능에 대한 생각)
select * from a inner join b on a.id=b.id and b.rank=(select max(rank) rnk from b where id=id)
from https://stackoverflow.com/questions/9473718/getting-max-value-from-rows-and-joining-to-another-table by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 오류 코드 :와 1055 호환되지 않는 sql_mode = ONLY_FULL_GROUP_BY (0) | 2020.06.05 |
---|---|
[SQL] CSV에서 SQL 대량 가져 오기 (0) | 2020.06.05 |
[SQL] 어떻게 SQL Server 2005의 테이블에 NTEXT 필드에 유니 코드 / 비 ASCII 문자를 찾을 수 있습니까? (0) | 2020.06.05 |
[SQL] 우리는 다른 테이블의 기본 키가 아닌 외부 키를 가질 수있다? (0) | 2020.06.05 |
[SQL] SQL 서버 내에서 와일드 카드를 사용하여 (0) | 2020.06.05 |