2009-09-14 2 views
0

, 내가 사용할 수 있습니다PHP를 사용하여 MySQL의 동일한 테이블에서 여러 행을 업데이트하는 방법은 무엇입니까? 별개의 필드 하나의 행이 갱신 될 경우

insert into tab(..) value(..) on duplicate key update ... 

을하지만 지금은 그렇지 않다, 나는 그것의 필드 "계정 아이디가 같은 테이블 내부에 4 개 행을 업데이트해야 "$ _SESSION [ 'accountId']와 같습니다.

내가 순간 내 마음에서 얻을 수있는 것은 :

delete from tab where accountId = $_SESSION['accountId'], 

다음 새로운 행을 삽입합니다.

분명히 가장 좋은 해결책은 아닙니다.

누구에게 더 좋은 생각이 있습니까?

답변

0

마찬가지로 update을 사용하십시오! 당신이 Update Statement을 검토해야처럼

update 
    tab t 
    inner join accounts a on 
     t.accountid = a.accountid 
set 
    t.col1 = 'value' 
where 
    a.accountname = 'Tom' 
+0

이것은 너무 간단하게 들리므로 업데이트가 무엇인지 궁금합니다. –

+0

@James :'update'는 ANSI SQL이며 너무 단순하지 않습니다. 첫 번째 쿼리는 OP가 요청한 * 정확히 * 수행합니다. 나는 고도로 당신이 MySQL이나 SQLite의 사본을 잡고 당신의 컴퓨터에서 그것을 시도하는 것이 좋습니다! – Eric

+0

아니, 어쩌면 나는 그것을 깨끗하게 만들거야. 나는 당신이 지금했던 것과는 다른 가치로 그 행들을 갱신 할 것입니다. – omg

0

질문을 바탕으로 보인다 : 그건 좀 더 쉽게 당신의 인생을 만드는 경우

update tab set col1 = 'value' where accountId = $_SESSION['accountId'] 

또한, MySQL은, 당신이 가입과 update을 수행 할 수 있습니다.

삽입은 새 행을 삽입하는 데 사용됩니다 - 업데이트하지 마십시오. 삭제는 삭제하는 데 사용됩니다. 그리고 업데이트은 기존 행을 수정하는 데 사용됩니다. "Insert On Duplicate Key Update"를 사용하면 행을 수정하기위한 해킹 방법이며, 행이 이미 있음을 알 때 사용할 수있는 형식이 아닙니다.

0
  1. 임시 테이블에 모든 값을로드하십시오.
  2. JOIN을 사용하여 모든 값을 업데이트하십시오.
  3. 대상 테이블에 존재하지 않는 임시 테이블의 모든 값을 INSERT하십시오.
0

replace 문을 사용할 수 있습니다. 이것은 DELETE 다음에 INSERT가 계속됩니다.

관련 문제