복붙노트

[SQL] 존재하는 경우 MySQL의 테이블 또는 업데이트에 삽입

SQL

존재하는 경우 MySQL의 테이블 또는 업데이트에 삽입

나는 데이터베이스 테이블에 행을 추가 할 수 있지만, 행이 동일한 고유 키가있는 경우 내가 행을 업데이트 할.

예를 들어,

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

하자가 고유 키가 ID입니다, 내 데이터베이스에 나는이 값을 해당 행을 업데이트 할 경우에는 ID = 1. 행이 말한다. 일반적으로이 오류를 제공합니다. 내가 무시 삽입 사용하는 경우 그 오류를 무시합니다,하지만 여전히 업데이트되지 않습니다.

해결법

  1. ==============================

    1.DUPLICATE KEY UPDATE ON을 사용하여 INSERT ...

    DUPLICATE KEY UPDATE ON을 사용하여 INSERT ...

    질문:

    INSERT INTO table (id, name, age) VALUES(1, "A", 19) ON DUPLICATE KEY UPDATE    
    name="A", age=19
    
  2. ==============================

    2.교체 확인

    교체 확인

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

    REPLACE into table (id, name, age) values(1, "A", 19)
    
  3. ==============================

    3.때 다음과 같은 구문을 사용하여 삽입 배치를 사용하여 :

    때 다음과 같은 구문을 사용하여 삽입 배치를 사용하여 :

    INSERT INTO TABLE (id, name, age) VALUES (1, "A", 19), (2, "B", 17), (3, "C", 22)
    ON DUPLICATE KEY UPDATE
        name = VALUES (name),
        ...
    
  4. ==============================

    4.이 밖으로 시도 :

    이 밖으로 시도 :

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

    도움이 되었기를 바랍니다.

  5. ==============================

    5.이 시도:

    이 시도:

    INSERT INTO 테이블 (ID, 이름, 나이) VALUES ( '1', '모하메드', '21') ON DUPLICATE KEY UPDATE 이름 = "무하마드 ', 나이 = '21'

    노트 : ID가 ID로 먼저 삽입 후 다음 기본 키를 여기 경우 = '1'때마다 시도가 ID를 삽입 = '1'의 이름과 나이, 변경됩니다 이전 이름 ​​연령을 업데이트합니다.

  6. ==============================

    6.

    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);
    

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

    당신은이 문이 링크를 방문에 대한 세부 사항을 알고 싶다면

  7. ==============================

    7.때 SQLite는 사용 :

    때 SQLite는 사용 :

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

    ID가 기본 키입니다 제공. 아니면 그냥 다른 행을 삽입합니다. 참조 INSERT (SQLite는).

  8. ==============================

    8.내가 여기에이 솔루션을하지만 (내 경우 웹 사이트 테스트 라이브 DB에 DB에) 다른 동일 구조 테이블에서 업데이트를 찾고 있었다해서 :

    내가 여기에이 솔루션을하지만 (내 경우 웹 사이트 테스트 라이브 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의 열을 나열 없습니다.

  9. ==============================

    9.내 경우에는 내가 쿼리 아래에 만들어졌지만 첫 번째 쿼리에 ID 1이 이미 나이가 이미있는 경우, 당신은 시대의 값보다 나이가없이 첫 번째 쿼리를 작성하는 경우 아무도 없을 것입니다 후

    내 경우에는 내가 쿼리 아래에 만들어졌지만 첫 번째 쿼리에 ID 1이 이미 나이가 이미있는 경우, 당신은 시대의 값보다 나이가없이 첫 번째 쿼리를 작성하는 경우 아무도 없을 것입니다 후

    REPLACE into table SET `id` = 1, `name` = 'A', `age` = 19
    

    문제 위의 피 아래처럼 쿼리 작성

    INSERT INTO table SET `id` = '1', `name` = 'A', `age` = 19 ON DUPLICATE KEY UPDATE `id` = "1", `name` = "A",`age` = 19
    

    그것은 당신을 도울 것입니다 수 있습니다 ...

  10. ==============================

    10.경우에, 당신은 (이름 예를 들어) 된 필드를 유지하려는. 쿼리는 다음과 같습니다

    경우에, 당신은 (이름 예를 들어) 된 필드를 유지하려는. 쿼리는 다음과 같습니다

    INSERT INTO table (id, name, age) VALUES(1, "A", 19) ON DUPLICATE KEY UPDATE    
    name=name, age=19;
    
  11. ==============================

    11.

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

    또한, 고유 키 제약에 대해 우려하는 것을 잊지 마십시오.

    ALTER TABLE `table` ADD UNIQUE `unique_key` ( `id` ) 
    
  12. from https://stackoverflow.com/questions/4205181/insert-into-a-mysql-table-or-update-if-exists by cc-by-sa and MIT license