2014-10-21 4 views

답변

1

는 논리 연구의 비트를 내놓았다나요 :

  1. 만들기 임시 테이블에
  2. 복사 기록에 그것을
  3. 업데이트 임시 테이블의 레코드
  4. 원래로 다시 복사 표

CREATE TEMP TABLE 임시 AS SELECT * FROM ORIGINAL WHERE NAME = 'joe';

UPDATE TEMP SET NAME = 'john'WHERE NAME = 'joe';

원래 위치에 삽입 SELECT * FROM 임시 WHERE NAME = 'john';

더 짧은 방법이 있는지 궁금합니다.

9

INSERT을 모두 SELECT과 결합하여 모두 수행 할 수 있습니다.

create table original 
(
    id serial, 
    name text, 
    location text 
); 

INSERT INTO original (name, location) 
VALUES ('joe', 'London'), 
     ('james', 'Munich'); 

을 그리고 당신이 할 수있는 INSERT 같이, 당신이 TEMP TABLE를 사용하지 않고에 대해 얘기하고 스위치의 종류의 일을 : 즉

는 다음과 같은 테이블 정의와 데이터가 채워했다고 밝혔습니다

INSERT INTO original (name, location) 
SELECT 'john', location 
FROM original 
WHERE name = 'joe'; 

여기는 sqlfiddle입니다.

는 (비록 아마 상당히 그래서 절대 시간 측면에서 작은 데이터 세트를 위해), 그 일 이후 더 빨리해야 하나 INSERTSELECT 추가 SELECTCREATE TABLE 플러스 UPDATE에 반대.