[SQL] INSERT INTO 또는 두 개의 조건 UPDATE
SQLINSERT INTO 또는 두 개의 조건 UPDATE
이 문제는 눈에 쉽게 보이는,하지만 난 단지 현명한 합리적인 시간 해결책을 발견하지 않았습니다.
다음과 같은 특징이있는 테이블을 고려 :
ID INTEGER PRIMARY KEY AUTOINCREMENT
name INTEGER
values1 INTEGER
values2 INTEGER
dates DATE
매일 새로운 행의 N 금액은 미래에 날짜를 생성하고, 유한 목록에서 나오는 '이름'으로되어있다. 나는 새로운 데이터가있을 때 새 행을 삽입 할 좋아하지만, '이름'과 '날짜'와 행이 이미 존재하는 경우, 간단하게 업데이트 할 것입니다.
제발 참고이 데이터를 다른 언어로 가압되는 조건으로는 가능하지 확인한다는 SPROC의 현재 제안 된 해결책.
해결법
-
==============================
1.즉, 중복 키 업데이트에 삽입을위한 것입니다.
즉, 중복 키 업데이트에 삽입을위한 것입니다.
이 매뉴얼 페이지는 여기에있다.
트릭 테이블 삽입을 수행하는 충돌이 검출 될 수 있도록하는 것이 (복합 될 수 있음) 고유 키를 가져야한다는 것이다. 따라서 업데이트가 해당 행에 그렇지 않으면 삽입이 발생합니다. 그것은 물론 기본 키가 될 수 있습니다.
귀하의 경우에는, 당신은 복합 키 등을 가질 수
unique key(theName,theDate)
행이 이미있는 경우 충돌이 검출되고, 업데이트가 발생합니다.
create table myThing ( id int auto_increment primary key, name int not null, values1 int not null, values2 int not null, dates date not null, unique key(name,dates) -- <---- this line here is darn important ); insert myThing(name,values1,values2,dates) values (777,1,1,'2015-07-11') on duplicate key update values2=values2+1; insert myThing(name,values1,values2,dates) values (778,1,1,'2015-07-11') on duplicate key update values2=values2+1; -- do the 1st one a few more times: insert myThing(name,values1,values2,dates) values (777,1,1,'2015-07-11') on duplicate key update values2=values2+1; insert myThing(name,values1,values2,dates) values (777,1,1,'2015-07-11') on duplicate key update values2=values2+1; insert myThing(name,values1,values2,dates) values (777,1,1,'2015-07-11') on duplicate key update values2=values2+1;
결과 보여줘
select * from myThing; +----+------+---------+---------+------------+ | id | name | values1 | values2 | dates | +----+------+---------+---------+------------+ | 1 | 777 | 1 | 4 | 2015-07-11 | | 2 | 778 | 1 | 1 | 2015-07-11 | +----+------+---------+---------+------------+
예상대로, 중복 키 업데이트 작업에 단 2 행을 삽입합니다.
-
==============================
2.이것은 쉬워요:
이것은 쉬워요:
from https://stackoverflow.com/questions/32468456/insert-into-or-update-with-two-conditions by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 페이스 북 데이터베이스 설계? (0) | 2020.04.12 |
---|---|
[SQL] 어떻게 이노로의 MyISAM의 모든 테이블을 변환하는? (0) | 2020.04.12 |
[SQL] 쿼리 3 개 테이블 "NOT IN"MySQL은 (0) | 2020.04.12 |
[SQL] 단일 매개 변수에 여러 값 전달 (0) | 2020.04.12 |
[SQL] 주어진 문자열을 분할 및 사례 문을 준비 (0) | 2020.04.12 |