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

MySQL에서 1~3 사이의 난수로 컬럼 값 업데이트하는 방법

MySQL에서 1~3 사이의 난수로 컬럼 값 업데이트하기

MySQL에서 특정 컬럼의 값을 1부터 3 사이의 난수로 일괄 업데이트해야 하는 경우가 종종 있습니다. 이럴 때는 RAND() 함수와 FLOOR() 함수를 조합하면 아주 간단하게 처리할 수 있습니다.

기본 구문

UPDATE yourTableName SET yourColumnName = FLOOR(1 + RAND() * 3);

RAND()는 0 이상 1 미만의 실수를 반환합니다. 여기에 3을 곱하고 1을 더한 뒤 FLOOR()로 소수점을 버리면 최종적으로 1, 2, 3 중 하나의 정수가 생성됩니다.

예제 테이블 생성

먼저 예제에 사용할 테이블을 만들어 보겠습니다.

mysql> CREATE TABLE UpdateNumber1To3
-> (
-> MyNumber INT
-> );
Query OK, 0 rows affected (0.61 sec)

샘플 데이터 삽입

INSERT 문을 사용해 몇 개의 레코드를 추가합니다.

mysql> INSERT INTO UpdateNumber1To3 VALUES(100);
Query OK, 1 row affected (0.16 sec)

mysql> INSERT INTO UpdateNumber1To3 VALUES(140);
Query OK, 1 row affected (0.25 sec)

mysql> INSERT INTO UpdateNumber1To3 VALUES(130);
Query OK, 1 row affected (0.15 sec)

현재 데이터 확인

SELECT 문으로 저장된 모든 레코드를 조회합니다.

mysql> SELECT * FROM UpdateNumber1To3;

실행 결과는 다음과 같습니다.

+----------+
| MyNumber |
+----------+
|      100 |
|      140 |
|      130 |
+----------+
3 rows in set (0.00 sec)

난수로 업데이트 실행

이제 MyNumber 컬럼의 값을 1~3 사이의 난수로 업데이트해 보겠습니다.

mysql> UPDATE UpdateNumber1To3 SET MyNumber = FLOOR(1 + RAND() * 3);
Query OK, 3 rows affected (0.19 sec)
Rows matched: 3  Changed: 3  Warnings: 0

업데이트 결과 확인

다시 테이블을 조회하면 값이 변경된 것을 확인할 수 있습니다.

mysql> SELECT * FROM UpdateNumber1To3;

업데이트된 결과는 다음과 같습니다.

+----------+
| MyNumber |
+----------+
|        1 |
|        2 |
|        1 |
+----------+
3 rows in set (0.00 sec)

동작 원리 정리

FLOOR(1 + RAND() * 3)의 동작 과정을 단계별로 살펴보면 다음과 같습니다.

  • RAND() : 0 이상 1 미만의 임의의 실수 반환 (예: 0.7234)
  • RAND() * 3 : 0 이상 3 미만의 실수 (예: 2.1702)
  • 1 + RAND() * 3 : 1 이상 4 미만의 실수 (예: 3.1702)
  • FLOOR(...) : 소수점 이하 버림 → 결과적으로 1, 2, 3 중 하나의 정수

이 방식은 테스트 데이터 생성, 랜덤 샘플링, 가짜(dummy) 값 채우기 등 다양한 상황에서 유용하게 활용할 수 있습니다. 원하는 범위가 달라지면 곱하는 숫자와 더하는 숫자만 조정하면 되므로 응용성도 뛰어납니다.