2011-08-22 1 views
1

이것은 내가 하나에 그것을 결합하는 이유 때문에, 꽤 관련이 2 부 질문 :동일한 열 이름에 여러 값 삽입 + 기존 항목 덮어 쓰기/업데이트?

1 부

나는 (합계를 최대 3 개 개의 다른 값으로 배열 $country$redirect 각이 그들 사이의 6 명).

그러나 내 테이블에는 countryredirect의 두 개의 열만 있습니다. 나는 $country[0], $country[1], etccountry에 삽입하고 $redirect[0], $redirect[1], etcredirect으로 삽입하는 삽입 쿼리를 사용하고 싶습니다.

이것은 바보 같은 질문 일 수 있습니다.이 INSERT 쿼리는 단순히 값을 열로 반복하면됩니까?

INSERT INTO table_name (country, redirect) values ('$country[0]', '$redirect[0]', '$country[1]', '$redirect[1]', '$country[2]', '$redirect[2]') 

그렇지 않은 경우 어떻게 작동합니까? for 루프를 사용할 수는 있지만 리소스 사용에 대해 우려하고 있습니다.


2 부

어떻게 열 country의 값이 이미 존재하는 행을 갱신/덮어 않습니다.

예를 들어, Great Britain은 같은 행에 있지만 redirect 열에 countryhttp://en-gb이 이미 있습니다.

나는 INSERT INTO table_name (country, redirect) VALUES ('Great Britain', 'http://uk')로 같은 INSERT 쿼리를 가지고, 및 I/덮어 Great Britain 이미 새로운 redirect 값으로 열 country 내에 존재하는 행을 업데이트하고 싶습니다.

답변/의견은 매우, 매우, 매우 감사하게 될 것이다 :) !! 첫 번째 질문에 대한

+0

새 행에 여러 값을 입력 하시겠습니까? 그리고 두 번째 부분은'country'를 유일한 인덱스로 설정하고 INSERT ... ON DUPLICATE KEY UPDATE를 설정하는 것입니다. 이러한 유형의 작업은 때로는 UPSERT로 참조됩니다 (유효한 MySQL 키워드는 아니지만). – DaveRandom

답변

4

는, 이런 식으로 작업을 수행하고 작동합니다

INSERT INTO table_name (country, redirect) 
VALUES ('$country[0]', '$redirect[0]'), 
     ('$country[1]', '$redirect[1]'), 
     ('$country[2]', '$redirect[2]') 

두 번째 질문 : 당신이 사용할 수있는 다음 countryunique index 및 필요 INSERT ON DUPLICATE KEY UPDATE :

INSERT INTO table_name (country, redirect) VALUES ('Great Britain', 'http://uk') 
    ON DUPLICATE KEY UPDATE redirect='http://uk'; 

또는 여러 값 :

INSERT INTO table_name (country, redirect) 
VALUES ('$country[0]', '$redirect[0]'), 
     ('$country[1]', '$redirect[1]'), 
     ('$country[2]', '$redirect[2]') 
ON DUPLICATE KEY UPDATE redirect=VALUES(redirect) 
+0

편집 : 업데이트를 보지 못했습니다. 도와 줘서 고마워 !! 타이머가 내려 지자 마자 대답을 받아 들일 것입니다. – Avicinnian

+0

'VALUES (...)'함수로 삽입하려는 값을 참조 할 수 있습니다. 이에 대한 예를 추가했습니다. – Jacob