2017-09-11 5 views
2

int를 얻으려는 중이 야, 또 다른 int를 추가하고 하나의 sql 명령에 새 데이터를 쓰려고합니다. 어떻게해야합니까? 여기에 내 솔루션 접근 방식이지만 작동하지 않습니다.SQL 가져 오기, 편집 및 데이터를 업데이트

update accounts set credit = ((select credit from accounts where id = 1679407)+1) where id=1679407; 

오류는 다음과 같습니다.

Error Code: 1093. Table 'accounts' is specified twice, both as a target for 'UPDATE' and as a separate source for data 0.125 sec 

답변

4

당신이 원하는 것 : 당신의 접근 방식과

update accounts 
    set credit = credit + 1 
    where id = 1679407; 
+0

감사합니다. 너무 복잡하다고 생각했습니다. :) – Markus

1

문제는 당신이 처음에 데이터를 검색하는 것과 동일한 테이블을 업데이트하는 것입니다. 이 documentation

에 주어진 인용 당으로서 당신은 테이블을 업데이트 할 수 없습니다와 하위 쿼리에서 같은 테이블에서 선택합니다.

당신이 단지 1 것을 신용을 증가 원하는대로 당신의 훨씬 간단한 작업을 달성하기 위해 매우 복잡한 방법은 비록 그에 대한 해결 방법

Update accounts 
     set credit = 
      ((select a.credit from 
         (select *from accounts)as a where id=1679407)+1) 
                    where id=1679407; 

을 다음과 같이이 있지만 단지 특정에 대한 신분증. 위의 방법으로 성능 문제가 발생할 수도 있습니다.

그래서 가장 쉽고 효율적인 방법은 @Gordon Linoff가 대답 한 방식입니다.

update accounts 
    set credit = credit + 1 
    where id = 1679407; 

문제의 해결책을 찾는 것 외에는이 답을 통해 뭔가를 배웠 으면합니다.