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



3 Answers

REPLACE 체크 아웃

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

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

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

예를 들어,

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

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




그냥 내가이 솔루션을 찾고 있었기 때문에 다른 동일하게 구조화 된 테이블 (내 경우에는 웹 사이트 테스트 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 의 열을 나열 할 필요는 없지만 더 나은 방법이라고 생각합니다.




INSERT IGNORE INTO table (id, name, age) VALUES (1, "A", 19);

INTO TABLE (id, name, age) VALUES(1, "A", 19) ON DUPLICATE UPDATE SET NAME = "A", AGE = 19;

REPLACE INTO table (id, name, age) VALUES(1, "A", 19);

이러한 모든 솔루션은 귀하의 질문에 대해 작동합니다.

이 진술에 관한 세부 사항을 알고 싶다면 이 링크를 방문하십시오.




이 시도:

INSERT INTO table (id,name,age) VALUES('1','Mohammad','21') ON DUPLICATE KEY UPDATE name='Mohammad',age='21'

노트 :
여기서 id가 기본 키인 경우 첫 번째 삽입 후 id='1' 을 삽입 할 때마다 id='1' 을 삽입하면 이름과 나이가 업데이트되고 이전 이름이 변경됩니다.




Related