[SQL] 단일 쿼리에 삽입 여러 행에 대한 MySQL의 ON DUPLICATE KEY의 UPDATE
SQL단일 쿼리에 삽입 여러 행에 대한 MySQL의 ON DUPLICATE KEY의 UPDATE
나는 하나의 쿼리에서 여러 행을 삽입 할 SQL 쿼리를 가지고있다. 그래서 뭔가를 같이 사용 :
$sql = "INSERT INTO beautiful (name, age)
VALUES
('Helen', 24),
('Katrina', 21),
('Samia', 22),
('Hui Ling', 25),
('Yumie', 29)";
mysql_query( $sql, $conn );
문제는 내가이 쿼리를 실행할 때, 나는 여부 (기본 키 아님) 고유 키, 예를 검사 할 것입니다 '이름'은 상기 체크해야하며, 이러한 '이름'가 이미 존재하는 경우, 대응하는 전체 열은 별도로 삽입, 갱신되어야한다.
'카트리나'에 관계없이 필드의 수, 데이터베이스, 전체 행에 이미 존재하는 경우, 예를 들어, 아래의 예에서, 업데이트해야합니다. '미아'가 존재하지 않는 경우 다시 상기 행을 삽입한다.
내가 사용하는 생각 :
INSERT INTO beautiful (name, age)
VALUES
('Helen', 24),
('Katrina', 21),
('Samia', 22),
('Hui Ling', 25),
('Yumie', 29) ON DUPLICATE KEY UPDATE
여기에 함정이다. 나는 붙어 계속 진행하는 방법에 대해 혼동되었다. 나는 한 번에 삽입 / 업데이트하려면 여러 행을 가지고있다. 나에게 방향을 제시하시기 바랍니다. 감사.
해결법
-
==============================
1.새 값을 참조하는 키워드 값을 사용 (설명서 참조).
새 값을 참조하는 키워드 값을 사용 (설명서 참조).
INSERT INTO beautiful (name, age) VALUES ('Helen', 24), ('Katrina', 21), ('Samia', 22), ('Hui Ling', 25), ('Yumie', 29) ON DUPLICATE KEY UPDATE age = VALUES(age), ...
-
==============================
2.INSERT INTO는 ... ON DUPLICATE KEY UPDATE는뿐만 아니라 SQL Server에 대해, MYSQL을 위해 작동합니다.
INSERT INTO는 ... ON DUPLICATE KEY UPDATE는뿐만 아니라 SQL Server에 대해, MYSQL을 위해 작동합니다.
SQL 서버,이 문제를 해결하려면 방법은 임시 테이블에 값을 삽입, 최초의 선언에 임시 테이블, 다음 MERGE를 사용
이 같이 :
declare @Source table ( name varchar(30), age decimal(23,0) ) insert into @Source VALUES ('Helen', 24), ('Katrina', 21), ('Samia', 22), ('Hui Ling', 25), ('Yumie', 29); MERGE beautiful AS Tg using @source as Sc on tg.namet=sc.name when matched then update set tg.age=sc.age when not matched then insert (name, age) VALUES (SC.name, sc.age);
-
==============================
3.당신은 DUPLICATE KEY UPDATE ON ... 대신 INSERT의 교체 사용할 수 있습니다.
당신은 DUPLICATE KEY UPDATE ON ... 대신 INSERT의 교체 사용할 수 있습니다.
from https://stackoverflow.com/questions/2714587/mysql-on-duplicate-key-update-for-multiple-rows-insert-in-single-query by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 쿼리에 의해 덤프 MYSQL (0) | 2020.04.03 |
---|---|
[SQL] OPTION (RECOMPILE)는 항상 빠른입니다; 왜? (0) | 2020.04.03 |
[SQL] 행이 존재하는 경우, 그렇지 않으면 삽입, 확인 (0) | 2020.04.02 |
[SQL] 실생활의 예를 들어, 때 OUTER / CROSS는 SQL에 적용 사용 (0) | 2020.04.02 |
[SQL] SQL 데이터베이스 설계에 대한 초보자 가이드 [마감] (0) | 2020.04.02 |