번호 채번 random으로 가능할까요? 0 2 1,624

by 또바기 [2015.03.09 09:17:14]


안녕하세요. 

random한 번호를 채번하려고 하는데.. 그 값들이 중복이 되면 안됩니다.

00001 ~ 99999 까지의 번호 번호를 채번하는데.. 

random 함수를 돌리자니.. 중복될 확률이 있어 불가능하며..

랜덤으로 테이블에 넣고 하나씩 빼서 쓰자니.. 채번종류가 많아.. 테이블크기가 커질 것 같습니다..

좋은 방법이 없을까요?

by 귀여운쫑이 [2015.03.09 10:10:54]

시퀀스를 사용해서 +1 씩 증가하면 되지 않을까요? 번호가 랜덤하게 들어가야 하나요?


by 창조의날개 [2015.03.09 11:23:53]

 

MM테이블을 원본데이터로 보고

테스트로 10까지 채번하는 기준으로 잡았습니다.

뭐 꼼수죠.. ^^


WITH MM AS(
    SELECT 1 SN FROM DUAL UNION ALL
    SELECT 3 SN FROM DUAL UNION ALL
    SELECT 5 SN FROM DUAL UNION ALL
    SELECT 8 SN FROM DUAL UNION ALL
    SELECT 9 SN FROM DUAL
)
SELECT AA.SN, AA.RN, BB.RDOM
FROM (
      SELECT SN, ROWNUM RN
      FROM (
            SELECT ROWNUM SN
            FROM DUAL
            CONNECT BY LEVEL <= 10
           ) SS
      WHERE NOT EXISTS (SELECT SN
                        FROM MM
                        WHERE SN=SS.SN
                       )
     ) AA
     , (SELECT ROUND(DBMS_RANDOM.VALUE(1, (SELECT 10-COUNT(*) FROM MM))) RDOM
        FROM DUAL
     ) BB
WHERE AA.RN = BB.RDOM
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입