[SQL] MySQL은 - 하나 개의 쿼리에서 다른 값으로 UPDATE 여러 행
SQLMySQL은 - 하나 개의 쿼리에서 다른 값으로 UPDATE 여러 행
나는 다른 값으로 여러 행을 업데이트하는 방법을 이해하려고 노력하고 난 단지 그것을하지 않습니다. 이 솔루션은 어디에나 있지만 내게는 이해하기 어려운 보인다.
예를 들어, 1 개 쿼리에 세 가지 업데이트 :
UPDATE table_users
SET cod_user = '622057'
, date = '12082014'
WHERE user_rol = 'student'
AND cod_office = '17389551';
UPDATE table_users
SET cod_user = '2913659'
, date = '12082014'
WHERE user_rol = 'assistant'
AND cod_office = '17389551';
UPDATE table_users
SET cod_user = '6160230'
, date = '12082014'
WHERE user_rol = 'admin'
AND cod_office = '17389551';
나는 예를 읽을 수 있지만 난 정말 쿼리를 만드는 방법을 이해하지 않습니다. 즉 :
UPDATE table_to_update
SET cod_user= IF(cod_office = '17389551','622057','2913659','6160230')
,date = IF(cod_office = '17389551','12082014')
WHERE ?? IN (??) ;
나는 완전히에서 WHERE와 IF condition..any 아이디어에 여러 조건이있는 경우 쿼리를 수행하는 방법을 취소 아니에요?
해결법
-
==============================
1.당신은이 방법을 수행 할 수 있습니다 :
당신은이 방법을 수행 할 수 있습니다 :
UPDATE table_users SET cod_user = (case when user_role = 'student' then '622057' when user_role = 'assistant' then '2913659' when user_role = 'admin' then '6160230' end), date = '12082014' WHERE user_role in ('student', 'assistant', 'admin') AND cod_office = '17389551';
나는 당신의 날짜 형식을 이해하지 않습니다. 날짜는 기본 날짜 및 시간 형식을 사용하여 데이터베이스에 저장해야합니다.
-
==============================
2.MySQL은 단일 쿼리로 여러 업데이트를 결합하는보다 읽기 쉬운 방법으로 할 수 있습니다. 이 읽기가 훨씬 더 쉽게, 더 나은 당신이 설명하는 시나리오에 맞는 것, 그리고 그 어려운 수습 여러 조건을 방지 할 수 있습니다.
MySQL은 단일 쿼리로 여러 업데이트를 결합하는보다 읽기 쉬운 방법으로 할 수 있습니다. 이 읽기가 훨씬 더 쉽게, 더 나은 당신이 설명하는 시나리오에 맞는 것, 그리고 그 어려운 수습 여러 조건을 방지 할 수 있습니다.
INSERT INTO table_users (cod_user, date, user_rol, cod_office) VALUES ('622057', '12082014', 'student', '17389551'), ('2913659', '12082014', 'assistant','17389551'), ('6160230', '12082014', 'admin', '17389551') ON DUPLICATE KEY UPDATE cod_user=VALUES(cod_user), date=VALUES(date)
이것은 user_rol, cod_office 조합이 기본 키 있다고 가정합니다. 이 중 하나만 기본 키 인 경우, 다음 UPDATE 목록에 다른 필드를 추가합니다. 그들 중 어느 것도 (가능성이 보인다) 기본 키의 경우,이 방법은 항상 새 레코드를 생성합니다 - 수배 아마 것.
그러나이 방법은 빌드 더 간결에보다 쉽게 준비된 문을합니다.
-
==============================
3.당신은 핸들 여러에 CASE 문을 사용할 수있는 경우 / 다음 시나리오 :
당신은 핸들 여러에 CASE 문을 사용할 수있는 경우 / 다음 시나리오 :
UPDATE table_to_update SET cod_user= CASE WHEN user_rol = 'student' THEN '622057' WHEN user_rol = 'assistant' THEN '2913659' WHEN user_rol = 'admin' THEN '6160230' END ,date = '12082014' WHERE user_rol IN ('student','assistant','admin') AND cod_office = '17389551';
-
==============================
4.
update table_name set cod_user = CASE WHEN user_rol = 'student' THEN '622057' WHEN user_rol = 'assistant' THEN '2913659' WHEN user_rol = 'admin' THEN '6160230'? END,date = '12082014' WHERE user_rol IN ('student','assistant','admin') AND cod_office = '17389551';
from https://stackoverflow.com/questions/25674737/mysql-update-multiple-rows-with-different-values-in-one-query by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] JDBC와 MySQL의를 사용하여 .SQL 스크립트를 실행 (0) | 2020.03.25 |
---|---|
[SQL] SQL 대소 문자 구분 문자열 비교 (0) | 2020.03.25 |
[SQL] 두 점 사이의 거리를 계산 (위도, 경도) (0) | 2020.03.25 |
[SQL] SQL SET UPDATE 하나의 열은 다른 열 참조하는 관련 테이블의 값과 동일하도록? (0) | 2020.03.25 |
[SQL] MYSQL 업데이트 문 내부는 테이블을 조인 (0) | 2020.03.25 |