문제

나는 내 머리카락을 다른 테이블에서 24 개의 훨씬 작은 컬럼으로 24 개의 훨씬 더 작은 칼럼으로 분할하려는 내 머리카락을 꺼내 었습니다.

테이블은 다음과 같습니다. "Postcode"와 자동 증가 "ID"열을 분할 할 열을 포함하는 "우편 번호" "ID"열

& 테이블은 다음과 같습니다. "postcode n "(삽입 1-24); -)

i 첫 번째 열에 삽입 할 수 있습니다 :

INSERT INTO postcodes_split (postcodes1)
SELECT postcode 
FROM postcodes 
WHERE (id <= 72974);
.

그러나 물론 물론 인서트는 다른 열에서 행 0에서 시작하지 않습니다.

나는 대신 업데이트를 시도했지만 구문이 잘못되었다. 그리고 나는 그것을 올바르게 만드는 것처럼 보일 수 없다 :

UPDATE postcodes_split 
SET postcodes2 = postcode FROM postcodes 
WHERE id FROM postcodes BETWEEN 72975 AND 145948
.

누군가가 나를 도울 수 있기를 바랍니다!

도움이 되었습니까?

해결책

여기에없는 테스트되지 않은 아이디어는 다음과 같이 일회성 작업을 제안합니다.

 UPDATE postcodes_split pcs, postcodes pc
 SET pcs.postcodes2 = pc.postcode
 WHERE pcs.id = pc.id - 72974
.

다른 팁

당신이하고있는 것을 중지하고 재검토하십시오.이것은 정말로 필요합니까?이와 같은 넓은 형식으로 저장된 데이터는 모든 곳에서 SQL 프로그래머의 유역입니다.그것은 그것을 할 수있는 올바른 방법이 아닙니다!

그러나 어쨌든 계속 가정합니다 :

INSERT 문은 새 행을 만듭니다.따라서 가장 좋은 방법은 한 번에 한 번에 모든 24 열을 모두 삽입하는 것입니다.이렇게하십시오 :

INSERT INTO postcodes_split (postcodes1,postcodes2,postcodes3,...)
    SELECT p1.postcode, p2.postcode, p3.postcode...
         FROM postcodes p1 WHERE (id <= 72974)
         join postcodes p2 on p2.id = p1.id + 72974
         join postcodes p3 on p3.id = p1.id + 145948
         ...
.

ID가 0 기반 또는 1 기반인지 여부에 따라 정확한 수학이 다를 수 있습니다.

다시,하지 마십시오 (그러나 당신의 상사가 당신에게 그것을하라는 것을 말하고 있다고 가정합니다.이 경우 재미있게 보내십시오!).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top