MySQL에서 지정한 범위 내의 난수를 생성하려면 RAND() 함수를 사용해야 합니다. 이 함수를 활용하면 UPDATE 문과 결합하여 특정 열의 값을 1부터 3 사이의 무작위 숫자 조건에 따라 업데이트할 수 있습니다.
기본 문법
열을 난수 조건으로 업데이트하는 기본 문법은 다음과 같습니다.
UPDATE yourTableName SET yourColumnName=value WHERE yourColumnName2=(SELECT FLOOR(1+RAND()*3));
위 쿼리에서 FLOOR(1+RAND()*3) 부분은 1부터 3 사이의 정수 난수를 생성합니다. RAND()는 0 이상 1 미만의 실수를 반환하므로, 여기에 3을 곱하고 1을 더한 뒤 FLOOR()로 소수점을 버리면 1, 2, 3 중 하나의 값이 만들어집니다.
예제 테이블 생성
문법을 직접 확인하기 위해 먼저 테이블을 생성해 보겠습니다.
mysql> create table updateRowWith1To3 -> ( -> Id int, -> Name varchar(100) -> ); Query OK, 0 rows affected (0.47 sec)
샘플 데이터 삽입
INSERT 명령으로 몇 개의 레코드를 추가합니다.
mysql> insert into updateRowWith1To3 values(1,'John'); Query OK, 1 row affected (0.24 sec) mysql> insert into updateRowWith1To3 values(2,'Sam'); Query OK, 1 row affected (0.14 sec) mysql> insert into updateRowWith1To3 values(3,'Carol'); Query OK, 1 row affected (0.14 sec) mysql> insert into updateRowWith1To3 values(4,'Mike'); Query OK, 1 row affected (0.16 sec) mysql> insert into updateRowWith1To3 values(5,'Bob'); Query OK, 1 row affected (0.10 sec) mysql> insert into updateRowWith1To3 values(6,'David'); Query OK, 1 row affected (0.17 sec)
전체 레코드 조회
SELECT 문으로 테이블의 모든 레코드를 확인합니다.
mysql> select *from updateRowWith1To3;
출력 결과
+------+-------+ | Id | Name | +------+-------+ | 1 | John | | 2 | Sam | | 3 | Carol | | 4 | Mike | | 5 | Bob | | 6 | David | +------+-------+ 6 rows in set (0.00 sec)
난수 조건으로 열 업데이트
이제 Id가 1~3 사이의 난수와 일치하는 행의 Name 값을 'Mary'로 업데이트하는 쿼리를 실행해 보겠습니다.
mysql> update updateRowWith1To3 set Name='Mary' where Id=(select floor( 1 + RAND( ) *3 )); Query OK, 1 row affected (0.15 sec) Rows matched: 1 Changed: 1 Warnings: 0
업데이트 결과 확인
다시 SELECT 문으로 테이블을 조회하면, Id가 1~3 사이인 행 중 하나가 'Mary'로 변경된 것을 확인할 수 있습니다.
mysql> select *from updateRowWith1To3;
출력 결과
+------+-------+ | Id | Name | +------+-------+ | 1 | Mary | | 2 | Sam | | 3 | Carol | | 4 | Mike | | 5 | Bob | | 6 | David | +------+-------+ 6 rows in set (0.00 sec)
이번 예제에서는 Id가 1인 John의 이름이 Mary로 변경되었습니다. 난수이기 때문에 실행할 때마다 업데이트되는 행이 달라질 수 있다는 점을 참고하세요.