- sql 한방 쿼리 , multiple record(row) update one query
//------------------------------
* How to update multiple rows at once in MySQL?
https://tableplus.com/blog/2018/11/how-to-update-multiple-rows-at-once-in-mysql.html
- 기본 (여러번 쿼리)
UPDATE students SET score1 = 5, score2 = 8 WHERE id = 1;
UPDATE students SET score1 = 10, score2 = 8 WHERE id = 2;
UPDATE students SET score1 = 8, score2 = 3 WHERE id = 3;
//-------------------------------
- JOIN ... UNION 사용 <===추천
- 1줄도 가능
UPDATE students s
JOIN (
SELECT 1 as id, 5 as new_score1, 8 as new_score2
UNION ALL
SELECT 2, 10, 8
UNION ALL
SELECT 3, 8, 3
) vals ON s.id = vals.id
SET score1 = new_score1, score2 = new_score2;
//-------------------------------
- INSERT INTO 사용
- 키가 설정되어 있어야 하는 제한있음
- 없는 경우 자동 추가됨(주의)
INSERT INTO students
(id, score1, score2)
VALUES
(1, 5, 8),
(2, 10, 8),
(3, 8, 3)
ON DUPLICATE KEY UPDATE
score1 = VALUES(score1),
score2 = VALUES(score2);
//-----------------------------------
Updating multiple rows with different values in one query
- 기본 (여러번 쿼리)
UPDATE mytable SET fruit='orange', drink='water', food='pizza' WHERE id=1;
UPDATE mytable SET fruit='strawberry', drink='wine', food='fish' WHERE id=2;
//-----------------
- CASE
UPDATE mytable SET
fruit = CASE WHEN id=1 THEN 'orange' ELSE 'strawberry' END,
drink = CASE WHEN id=1 THEN 'water' ELSE 'wine' END,
food = CASE WHEN id=1 THEN 'pizza' ELSE 'fish' END
WHERE id IN (1,2);
//-----------------
- IF
UPDATE mytable SET
fruit = IF(id=1,'orange','strawberry'),
drink = IF(id=1,'water','wine'),
food = IF(id=1,'pizza','fish')
WHERE id IN (1,2);
'Code > Database (DB)' 카테고리의 다른 글
[sql] 일정한 수를 증가 시키는 쿼리 (null 인 칼럼 포함) (0) | 2021.03.07 |
---|---|
MySql 여러 행을 한번에 update (0) | 2021.02.27 |
MS Sql Server 사용법 (0) | 2020.12.30 |
[SQL] 여러 행 추가 (테스트용 DB 생성) 프로시저 (0) | 2020.09.20 |
[sql] 레코드에 특정 값이 없으면 추가하기 (0) | 2020.09.12 |
[SQL] 추가(INSERT) 시도, 이미 있으면 갱신(UPDATE) [한방쿼리] (0) | 2020.08.07 |
댓글을 달아 주세요