source

MySql 테이블 삽입(존재하지 않으면 업데이트)

manysource 2022. 12. 24. 17:45

MySql 테이블 삽입(존재하지 않으면 업데이트)

UPDATE AggregatedData SET datenum="734152.979166667", 
Timestamp="2010-01-14 23:30:00.000" WHERE datenum="734152.979166667";

동작하는 것은,datenum존재하지만 이 데이터를 새 행으로 삽입하고 싶다.datenum는 존재하지 않습니다.

갱신하다

데이터넘은 고유하지만 기본 키가 아닙니다.

Jai는 당신이 사용해야 한다는 것이 옳다.INSERT ... ON DUPLICATE KEY UPDATE.

datenum은 고유 키이므로 update 구에 포함할 필요가 없으므로 변경하지 마십시오.표의 다른 모든 열을 포함해야 합니다.함수를 사용하여 다른 열을 업데이트할 때 올바른 값이 사용되는지 확인할 수 있습니다.

다음은 적절한 방법으로 다시 작성된 업데이트입니다.INSERT ... ON DUPLICATE KEY UPDATEMySQL 구문:

INSERT INTO AggregatedData (datenum,Timestamp)
VALUES ("734152.979166667","2010-01-14 23:30:00.000")
ON DUPLICATE KEY UPDATE 
  Timestamp=VALUES(Timestamp)

다음을 사용해 보십시오.

지정한 경우ON DUPLICATE KEY UPDATE에 중복되는 값을 발생시키는 행이 삽입됩니다.UNIQUE index or프라이머리 키, MySQL performs an [UPDATE'](http://dev.mysql.com/doc/refman/5.7/en/update.html) 이전 행의...

ON DUPLICATE KEY UPDATE절에는 쉼표로 구분된 여러 열 할당을 포함할 수 있습니다.

와 함께ON DUPLICATE KEY UPDATE행을 새 행으로 삽입할 경우 해당 행당 값은 1, 기존 행이 갱신될 경우 2, 기존 행이 현재 값으로 설정되어 있는 경우 0입니다.를 지정했을 경우,CLIENT_FOUND_ROWS시스템에 연결할 때 기존 행이 현재 값으로 설정된 경우 영향을 받는 행 값은 1(0이 아님)이 됩니다.

두 필드(모두 외부 키)에 따라 테이블에 업데이트 또는 삽입해야 하는 상황이 발생했지만 고유 구속조건을 설정할 수 없었습니다(그래서 삽입...).ON DUPLICE KEY UPDATE는 동작하지 않습니다).사용 목적은 다음과 같습니다.

replace into last_recogs (id, hasher_id, hash_id, last_recog) 
  select l.* from 
    (select id, hasher_id, hash_id, [new_value] from last_recogs 
     where hasher_id in (select id from hashers where name=[hasher_name])
     and hash_id in (select id from hashes where name=[hash_name]) 
     union 
     select 0, m.id, h.id, [new_value] 
     from hashers m cross join hashes h 
     where m.name=[hasher_name] 
     and h.name=[hash_name]) l 
  limit 1;

이 예는 데이터베이스 중 하나에서 자른 것입니다.입력 파라미터(2개의 이름과 번호)는 [hasher_name], [hash_name] 및 [new_value]로 대체됩니다.중첩된 SELECT...LIMIT 1은 기존 레코드 또는 새 레코드 중 첫 번째 레코드(last_recogs.id는 자동 증가 프라이머리 키)를 꺼내 REPLACE INTO에 입력되는 값으로 사용합니다.

언급URL : https://stackoverflow.com/questions/6030071/mysql-table-insert-if-not-exist-otherwise-update