작은 열의 다른 테이블에 테이블에 큰 열 분할 MySQL
-
13-12-2019 - |
문제
나는 내 머리카락을 다른 테이블에서 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 기반인지 여부에 따라 정확한 수학이 다를 수 있습니다.
다시,하지 마십시오 (그러나 당신의 상사가 당신에게 그것을하라는 것을 말하고 있다고 가정합니다.이 경우 재미있게 보내십시오!).