반응형
SELECT 결과로 UPDATE 하는 다양한 방법이 있습니다.
예제 테이블 생성과 DATA를 넣어 줍니다.
CREATE TABLE t_table (
id VARCHAR(20),
name VARCHAR(50),
email VARCHAR(20),
age INT
);
INSERT INTO t_table (id, name, email, age)
VALUES ('user1', '홍길동', 'user1@mail.com', 25), ('user2', '제라드', 'user2@mail.com', 24), ('user3', '루니', 'user3@mail.com', 30), ('user4', '렘파드', 'user4@mail.com', 29);
아래처럼 테이블이 생성되었습니다.
테이블이 하나일 경우는 WHERE 절에 조건을 걸고, SET에 UPDATE 할 내용을 작성합니다.
다만, MYSQL은 ORACLE과 달리 UPDATE/DELETE 시 자신 테이블 DATA를 바로 사용하지 못하여, sub query 하나 더 넣고 감싸서 쿼리를 작성하시면 됩니다.
UPDATE t_table
SET age = 35
WHERE id IN (
select a.id
from(
SELECT id FROM t_table WHERE email = 'user2@mail.com') a
);
다음은 테이블이 2개 일 경우, UPDATE 방법입니다.
테이블을 하나 더 만들고, DATA를 넣어 줍니다.
CREATE TABLE t_table_info (
id VARCHAR(20),
pay_dt DATE
);
INSERT INTO t_table_info (id)
VALUES ('user1'), ('user2');
첫 번째 UPDATE문은 WHERE절에 첫 번째 테이블의 DATA를 조회해서 PAT_DT 필드를 업데이트합니다.
두 번째 UPDATE문은 INNER JOIN을 사용해서 user1의 PAY_DT 필드를 업데이트합니다.
간단한 UPDATE문이니 응용해서 사용하시면 됩니다. (UPDATE 구문을 사용하실 때는 항상 주의 바랍니다)
UPDATE t_table_info
SET pay_dt = now()
WHERE id IN (
SELECT id
FROM t_table
WHERE id='user2'
);
UPDATE t_table_info a
INNER JOIN t_table b ON a.id = b.id
SET a.pay_dt = now()
WHERE b.id='user1'
반응형
'개발이야기 > MySQL' 카테고리의 다른 글
[MySQL] order by 특정 값 먼저 정렬 하기 (order by field, order by case when) (0) | 2023.03.21 |
---|---|
[MySQL] date_format 사용방법 (날짜 검색, 조회, 포함) (2) | 2023.02.28 |
[MySQL] 공백, NULL 값 체크/조회 하기 (0) | 2023.02.06 |
[MySQL] WHERE LIKE, REGEXP (문자열 포함) (0) | 2023.02.05 |
[MySQL] CASE WHEN 사용방법, 예제 (0) | 2022.12.02 |
댓글