랜덤으로 뽑은 ROW 를 UPDATE 해야하는 일이 있었다. 

랜덤으로 뽑기 위해 ORDER BY DBMS_RANDOM.RANDOM를 사용하려고 하는데 

 

IN 절에 ORDER BY가 사용불가하다~!

 

그러나. 

아래처럼 꼼수를 사용하면 사용가능하다~

 

SELECT문으로 한번 감싸주면 정상적으로 동작한다. 

UPDATE 
	TEST_TAB 
SET 
	N1 = 1  
WHERE 
	ID IN 
    	( SELECT * FROM (SELECT ID FROM TEST_TAB ORDER BY DBMS_RANDOM.RANDOM) WHERE ROWNUM < 1500) 
   	

 

 

끝!! 

+ Recent posts