Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 1~3 사이의 난수로 열을 업데이트하는 방법

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로 변경되었습니다. 난수이기 때문에 실행할 때마다 업데이트되는 행이 달라질 수 있다는 점을 참고하세요.