insert-update update insert - MySQL 테이블에 삽입하거나 존재하는 경우 업데이트하십시오.





4 Answers

REPLACE 체크 아웃

http://dev.mysql.com/doc/refman/5.0/en/replace.html

REPLACE into table (id, name, age) values(1, "A", 19)
동시 merge delete

데이터베이스 테이블에 행을 추가하고 싶지만 동일한 고유 키가있는 행이 있으면 행을 업데이트하고 싶습니다.

예를 들어,

insert into table (id, name, age) values(1, "A", 19)

고유 키가 id 이고 데이터베이스에 id = 1 행이 있다고 가정 해 보겠습니다. 이 경우이 값으로 해당 행을 업데이트하려고합니다. 일반적으로 이는 오류를 발생시킵니다. insert IGNORE 하면 오류를 무시하지만 여전히 업데이트되지 않습니다.




이것을보십시오 :

INSERT INTO table (id, name, age) VALUES (1, 'A', 19) ON DUPLICATE KEY UPDATE id = id + 1;

희망이 도움이됩니다.




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 의 열을 나열 할 필요는 없지만 더 나은 방법이라고 생각합니다.




Related