by 조신부리 [SQL Query] update select 일괄 update [2017.12.26 17:32:07]
quickmenu_id | row_number() | no |
키값으로 | 여기에있는값을 | 여기로 복사 |
새로만든 컬럼 no에 rownum(그룹별순번)을 전체 update하려고 합니다.
쿼리를 실행하는데 20초정도 걸립니다(5000행)
제가 작성한 쿼리는 뭔가 좀 복잡한데 간단한 update문을 부탁합니다
update MDQUICKMENU a set no = (select rn from ( select row_number() over(partition by site_id order by TO_NUMBER(quickmenu_id)) rn ,quickmenu_id from MDQUICKMENU ) q where a.quickmenu_id = q.quickmenu_id );
-- 위의 UPDATE 문에 WHERE 절에 a.SITE_ID = q.SITE_ID 도 빠져있네요. MERGE INTO MDQUICKMENU m USING ( SELECT SITE_ID , QUICKMENU_ID , ROW_NUMBER() OVER(PARTITION BY SITE_ID ORDER BY TO_NUMBER(QUICKMENU_ID) ) RN FROM MDQUICKMENU )e ON ( m.SITE_ID = e.SITE_ID AND m.QUICKMENU_ID = e.QUICKMENU_ID ) WHEN MATCHED THEN UPDATE SET m.NO = e.RN