c1, c2, c3 열에서 c1, c2, c3 열에서 c5 열 (1로)을 업데이트하고 싶습니다. 여기서 c3은 동일한 c1, c2 그룹에서 최대 값입니다. Oracle db에서 hql을 사용하고 있습니다.
c1 | c2 | c3 | c4 | c5 | c5 after update
2000 | a | 01 | x | 0 | 0
2000 | a | 01 | y | 0 | 0
2000 | a | 01 | z | 0 | 0
2000 | a | 02 | z | 0 | 1
2000 | a | 02 | x | 0 | 1
...........................
2000 | b | 01 | x | 0 | 0
2000 | b | 01 | y | 0 | 0
2000 | b | 01 | z | 0 | 0
2000 | b | 02 | z | 0 | 1
..........................
..........................
2001 | a | 01 | x | 0 | 0
2001 | a | 01 | y | 0 | 0
2001 | a | 01 | z | 0 | 0
2001 | a | 02 | z | 0 | 0
2001 | a | 02 | x | 0 | 0
2001 | a | 02 | y | 0 | 0
2001 | a | 02 | w | 0 | 0
2001 | a | 03 | y | 0 | 1
2001 | a | 03 | w | 0 | 1
...........................
2001 | b | 01 | x | 0 | 0
2001 | b | 01 | y | 0 | 0
2001 | b | 02 | x | 0 | 1
2001 | b | 02 | z | 0 | 1
나는 hql에 익숙하지 않지만 빠른 Google 검색은 SQL과 "유사"하지만 객체 지향적이라는 것을 보여줍니다. 문제에서 표준 관계형 Oracle 테이블을 업데이트해야하므로 hql을 사용해야하거나 사용하려는 이유가 명확하지 않습니다.
간단한 SQL 문을 사용할 수있는 방식으로 Oracle 데이터베이스에 액세스 할 수있는 경우 다음과 같이 MERGE 문으로 업데이트를 실행할 수 있습니다. (이 td
테이블의 이름 이라고 가정 )
merge into td
using ( select c1, c2, max(c3) as max_c3
from td
group by c1, c2
) x
on (td.c1 = x.c1 and td.c2 = x.c2 and td.c3 = max_c3)
when matched then update
set c5 = 1
;
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다