2017-11-06 1 views
-1

두 테이블 A와 B (오라클 데이터베이스)가 있습니다. 표 B에는 id와 mdate라는 두 개의 열이 있습니다. 여기서 id는 기본 키입니다. 표 A에는 id와 mdate라는 두 개의 열이 있습니다. 여기서 id는 외래 ​​키입니다. 일치하는 ID에 대해 테이블 ​​A의 최대 mdate 값이어야하는 테이블 Bmdate 값을 업데이트하려고합니다.다른 테이블을 기반으로 테이블 값을 업데이트하려고합니다. 최대 값

Update b 
set mdate= (select max(mdate) from a group by Id) 
where b.id = a.id; 
+0

rdbms 란 무엇입니까? SQL 서버, 포스트 그레스, 오라클? –

+0

MySQL과 Oracle을 모두 태그 지정했습니다. 무엇 이니? – Barmar

+0

'WHERE b.id = a.id'를 하위 쿼리로 이동하십시오. – Barmar

답변

0

매우 가깝습니다. WHERE 절을 상관 된 하위 쿼리로 만들려면 하위 쿼리로 이동해야합니다. 또한 UPDATE의 매개 변수는 열 이름이 아닌 테이블 이름입니다.

UPDATE b 
SET mdate = (SELECT MAX(mdate) FROM a WHERE b.id = a.id) 

는 MySQL의에서 당신은 또한 JOIN으로 작업을 수행 할 수 있습니다 씨 Barmar에

UPDATE b 
JOIN (SELECT id, MAX(mdate) AS mdate 
     FROM a 
     GROUP BY id) AS a ON a.id = b.id 
SET b.mdate = a.mdate 
+0

mysql에서 에러가 발생하기 때문에 mysql에 대한 솔루션을 제안 할 수 있습니까? (아직 oracle을 체크하지 않음) –

+0

이것이 MySQL에서 작동해야한다고 생각합니다. – Barmar

+0

MySQL에서 사용하는'JOIN' 버전을 추가했습니다. 어떤 오류가 발생 했습니까? – Barmar

0
Update b 
set(b.mdate) = (select MAX(a.mdate) from a where b.id = a.id) 
where exists (select 1 from a where b.id = a.id); 

감사합니다.

관련 문제