2010-05-09 8 views
0

누구나 구문을 알려주시겠습니까?목록에없는 경우 목록에 삽입하십시오

insert into history (company,partnumber,price) 
values ('blah','IFS0090','0.00') 
if company NOT IN ('blah','blah2','blah3','blah4','blah4') 
and partnumber='IFS0090'; 

배경 :
나는 매일 회사, 제품과 가격을 저장하는 기록 테이블이 있습니다. 그러나 때로는 회사가 며칠 동안 자체를 제거합니다. 이 문제를 복잡하게하는 이유는 데이터를 표시 할 때 전날 가격 만 올리면 가격만으로 일일 변경 사항을 저장하고 전체 일 목록을 스냅 샷으로 저장하지 않기 때문입니다 (데이터가 엄청납니다). 그래서 나는 이런 식으로 뭔가를 할 필요가 있습니다. 0.00 가격은 그들이 더 이상 존재하지 않는다는 것을 의미합니다.

답변

1

사용 :

INSERT INTO HISTORY 
    (company, partnumber, price) 
SELECT 'blah', 'IFS0090','0.00' 
    FROM HISTORY h 
    WHERE h.company NOT IN ('blah','blah2','blah3','blah4','blah4') 
    AND h.partnumber = 'IFS0090' 
0

당신은 당신의 문에 두 개의 완전히 다른 개념을 혼합하고 있습니다. 하나를 선택

  • 는 어느 쪽이든 당신은 상수 값 INSERT (이 경우 프로그래밍 언어로 검사를 할을하고 INSERT INTO ... VALUES (...) 따라 생성)
  • 또는 다른 테이블의 필터링 된 내용을 삽입 할.

후자 MySQL을 (즉, INSERT ... SELECT syntax의) 쿼리는 다음과 같이 보일 것이다 가능하다 :

INSERT INTO history (...) 
SELECT ... 
FROM liveTable 
INNER JOIN moreTables ... 
--# this is a regular SELECT statement, as you might have guessed by now 
WHERE company NOT IN ('blah','blah2','blah3','blah4','blah4') 
AND partnumber='IFS0090'; 
관련 문제