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

MySQL UPDATE 문 하나로 여러 행의 열 값 한 번에 업데이트하기

MySQL에서 WHERE 절에 지정한 조건이 여러 행과 일치한다면, 단일 UPDATE 문만으로 여러 행의 열 값을 한 번에 업데이트할 수 있습니다. 이 경우 SET 절은 조건에 일치하는 모든 행에 동일하게 적용됩니다.

예제로 살펴보기

다음과 같은 'tender' 테이블이 있다고 가정해 보겠습니다.

mysql> Select * from tender;

+-----------+---------+------+
| tender_id | company | rate |
+-----------+---------+------+
| 200       | ABC     | 1000 |
| 300       | ABD     | 5000 |
| 301       | ABE     | 6000 |
| 302       | ABF     | 2500 |
| 303       | ABG     | 2600 |
+-----------+---------+------+

5 rows in set (0.00 sec)

이제 tender_id가 300 이상인 행들의 'rate' 열 값을 일괄적으로 인상하고 싶다면, 아래와 같은 쿼리를 사용하면 됩니다.

mysql> UPDATE tender SET rate = rate + 1000 WHERE tender_id >= 300;
Query OK, 4 rows affected (0.07 sec)
Rows matched: 4 Changed: 4 Warnings: 0

mysql> Select * from tender;

+-----------+---------+------+
| tender_id | company | rate |
+-----------+---------+------+
| 200       | ABC     | 1000 |
| 300       | ABD     | 6000 |
| 301       | ABE     | 7000 |
| 302       | ABF     | 3500 |
| 303       | ABG     | 3600 |
+-----------+---------+------+

5 rows in set (0.00 sec)

위 결과를 보면 tender_id가 300 이상인 네 개 행의 'rate' 값이 각각 1000씩 증가한 것을 확인할 수 있습니다. 반면 조건에 해당하지 않는 tender_id 200(ABC)의 값은 그대로 유지되었습니다.

핵심 포인트 정리

  • UPDATE 문의 WHERE 절 조건이 여러 행과 일치하면, 해당하는 모든 행이 한 번에 수정됩니다.
  • SET 절에는 rate = rate + 1000처럼 기존 값을 기준으로 한 연산식도 사용할 수 있습니다.
  • 쿼리 실행 후 'Rows matched'와 'Changed' 수치를 통해 실제로 몇 개의 행이 변경되었는지 확인할 수 있습니다.

이처럼 WHERE 조건만 잘 활용하면 반복문 없이도 대량의 데이터를 효율적이고 안전하게 수정할 수 있습니다.