MySQL 테이블에 삽입하거나 존재하는 경우 업데이트
데이터베이스 테이블에 행을 추가하고 싶지만 동일한 고유 키가있는 행이 있으면 행을 업데이트하고 싶습니다.
예를 들면
insert into table (id, name, age) values(1, "A", 19)
고유 키가 id
이고 내 데이터베이스에 id = 1
. 이 경우 해당 행을 이러한 값으로 업데이트하고 싶습니다. 일반적으로 이것은 오류를 제공합니다. 사용 insert IGNORE
하면 오류가 무시되지만 여전히 업데이트되지 않습니다.
사용하다 INSERT ... ON DUPLICATE KEY UPDATE
질문:
INSERT INTO table (id, name, age) VALUES(1, "A", 19) ON DUPLICATE KEY UPDATE
name="A", age=19
REPLACE 확인
http://dev.mysql.com/doc/refman/5.0/en/replace.html
REPLACE into table (id, name, age) values(1, "A", 19)
일괄 삽입을 사용하는 경우 다음 구문을 사용하십시오.
INSERT INTO TABLE (id, name, age) VALUES (1, "A", 19), (2, "B", 17), (3, "C", 22)
ON DUPLICATE KEY UPDATE
name = VALUES (name),
...
이것을 시도하십시오 :
INSERT INTO table (id, name, age) VALUES (1, 'A', 19) ON DUPLICATE KEY UPDATE id = id + 1;
도움이 되었기를 바랍니다.
이 시도:
INSERT INTO table (id,name,age) VALUES('1','Mohammad','21') ON DUPLICATE KEY UPDATE name='Mohammad',age='21'
참고 :
여기서 id가 기본 키인 경우 삽입을 id='1'
시도 할 때마다 처음 삽입 한 후 id='1'
이름과 나이가 업데이트되고 이전 이름의 나이가 변경됩니다.
INSERT IGNORE INTO table (id, name, age) VALUES (1, "A", 19);
INSERT INTO TABLE (id, name, age) VALUES(1, "A", 19) ON DUPLICATE KEY UPDATE NAME = "A", AGE = 19;
REPLACE INTO table (id, name, age) VALUES(1, "A", 19);
이 모든 솔루션은 귀하의 질문과 관련하여 작동합니다.
이 성명서에 대해 자세히 알고 싶다면 이 링크를 방문하십시오.
SQLite를 사용하는 경우 :
REPLACE into table (id, name, age) values(1, "A", 19)
제공되는 id
기본 키입니다. 또는 다른 행을 삽입합니다. INSERT (SQLite)를 참조하십시오 .
이 솔루션을 찾고 있었지만 동일한 구조의 다른 테이블에서 업데이트하기 위해 여기에 있었기 때문에 (내 경우 웹 사이트 테스트 DB에서 라이브 DB로) :
INSERT live-db.table1
SELECT *
FROM test-db.table1 t
ON DUPLICATE KEY UPDATE
ColToUpdate1 = t.ColToUpdate1,
ColToUpdate2 = t.ColToUpdate2,
...
다른 곳에서 언급했듯이 업데이트하려는 열만 뒤에 포함하면됩니다 ON DUPLICATE KEY UPDATE
.
INSERT
또는에 열을 나열 할 필요는 SELECT
없지만 더 나은 방법이라는 데 동의합니다.
제 경우에는 아래 쿼리를 만들었지 만 id
1이 이미 존재하고 나이가 이미 있으면 첫 번째 쿼리 age
에서 값이 없는 첫 번째 쿼리를 만들면 값 age
이 없습니다.
REPLACE into table SET `id` = 1, `name` = 'A', `age` = 19
for avoiding above issue create query like below
INSERT INTO table SET `id` = '1', `name` = 'A', `age` = 19 ON DUPLICATE KEY UPDATE `id` = "1", `name` = "A",`age` = 19
may it will help you ...
In case, you want to keep old field (For ex: name). The query will be:
INSERT INTO table (id, name, age) VALUES(1, "A", 19) ON DUPLICATE KEY UPDATE
name=name, age=19;
INSERT INTO table (id, name, age) VALUES (1, 'A', 19) ON DUPLICATE KEY UPDATE id = id + 1;
Also do not forget to concern about the unique key constraint.
ALTER TABLE `table` ADD UNIQUE `unique_key` ( `id` )
참고URL : https://stackoverflow.com/questions/4205181/insert-into-a-mysql-table-or-update-if-exists
'Programing' 카테고리의 다른 글
이전 버전의 패키지 설치 (0) | 2020.09.29 |
---|---|
객체 배열에서 속성 값을 배열로 추출 (0) | 2020.09.29 |
모든 사용자의 모든 크론 작업을 어떻게 나열합니까? (0) | 2020.09.29 |
자바 스크립트 배열에서 임의의 항목 가져 오기 (0) | 2020.09.29 |
Node.js를 사용하려면 ES6 가져 오기 / 내보내기가 필요합니다. (0) | 2020.09.29 |