순차적으로 번호가 매겨진 두 번째 열로 바꿀 emp_no를 반환하는 두 개의 쿼리를 생성하십시오. 다른 하나는 무작위 적으로 동일합니다. 그런 다음 업데이트에서 숫자를 기준으로 가입하십시오.
UPDATE employee
SET e.emp_no=r.rand_val
FROM (query1) e
JOIN (query2) r
ON e.number=r.number
가능성 쿼리 1이 될 법한 :
SELECT emp_no,row_number() OVER(ORDER BY emp_no) as number
FROM employee
WHERE employee.emp_no IN (SELECT emp_no FROM employee
GROUP BY emp_no HAVING COUNT(*)>1)
가능성 쿼리 2가 될 것 같은 뭔가 :
SELECT rand_val,row_number() OVER(ORDER BY NEWID()) as number
FROM random_values
그래서 모든 것은 다음과 같습니다
UPDATE employee
SET e.emp_no=r.rand_val
FROM (
SELECT emp_no,row_number() OVER(ORDER BY emp_no) as number
FROM employee
WHERE employee.emp_no IN (SELECT emp_no FROM employee
GROUP BY emp_no HAVING COUNT(*)>1)) e
JOIN (
SELECT rand_val,row_number() OVER(ORDER BY NEWID()) as number
FROM random_values) r
ON e.number=r.number
그것은이다 한동안, 당신은 이 같은뿐만 아니라 직원 테이블에 다시 가입 :
UPDATE employee
SET e.emp_no=r.rand_val
FROM employee
JOIN
(
SELECT emp_no,row_number() OVER(ORDER BY emp_no) as number
FROM employee
WHERE employee.emp_no IN (SELECT emp_no FROM employee
GROUP BY emp_no HAVING COUNT(*)>1)) e
ON employee.emp_no=e.emp_no
JOIN (
SELECT rand_val,row_number() OVER(ORDER BY NEWID()) as number
FROM random_values) r
ON e.number=r.number
을하지만 당신은 여전히 중복 어려움이있을 수 있습니다 모두 당신은 몇 가지로 EMP_NO에게의를 구별하지 않는 한 새 번호 (또는 같은 임의의 숫자)를 할당하기 다른 분야. 실제 직원 테이블에는 단 하나의 컬럼 이상이 있다고 가정하고, 다른 숫자가 지정되도록하려면 emp_no와 고유 필드를 모두 참조하거나 query1에서 두 개의 중복 중 하나를 제거해야합니다.