반응형
INSERT INTO… 모든 MySQL 열에 대해 선택
오래된 데이터를 다음에서 이동하려고합니다.
this_table >> this_table_archive
모든 열을 복사합니다. 나는 이것을 시도했지만 작동하지 않습니다 :
INSERT INTO this_table_archive (*) VALUES (SELECT * FROM this_table WHERE entry_date < '2011-01-01 00:00:00');
참고 : 테이블은 동일하며 id
기본 키로 설정되었습니다.
올바른 구문은 매뉴얼에 설명되어 있습니다 . 이 시도:
INSERT INTO this_table_archive (col1, col2, ..., coln)
SELECT col1, col2, ..., coln
FROM this_table
WHERE entry_date < '2011-01-01 00:00:00';
id 열이 자동 증분 열이고 이미 두 테이블에 일부 데이터가있는 경우 경우에 따라 열 목록에서 id를 생략하고 원본에 이미 존재하는 id를 삽입하지 않도록 대신 새 id를 생성 할 수 있습니다. 표. 대상 테이블이 비어 있으면 문제가되지 않습니다.
구문의 경우 다음과 같습니다 (암시 적으로 "all"을 의미하는 열 목록 제외)
INSERT INTO this_table_archive
SELECT *
FROM this_table
WHERE entry_date < '2011-01-01 00:00:00'
아카이브 테이블에 데이터가 이미있는 경우 기본 키 오류 방지
INSERT INTO this_table_archive
SELECT t.*
FROM this_table t
LEFT JOIN this_table_archive a on a.id=t.id
WHERE t.entry_date < '2011-01-01 00:00:00'
AND a.id is null # does not yet exist in archive
Mark Byers 답변 추가 :
때로는 하드 코드 된 세부 정보 를 삽입하려고 할 때도 있습니다. 그렇지 않으면 고유 제약 조건 실패 등이있을 수 있습니다. 따라서 열의 일부 값을 재정의하는 상황에서 다음을 사용하십시오.
INSERT INTO matrimony_domain_details (domain, type, logo_path)
SELECT 'www.example.com', type, logo_path
FROM matrimony_domain_details
WHERE id = 367
여기에 도메인 값이 고유 제약 조건에서 제거하기 위해 하드 코딩 된 방식으로 추가되었습니다.
값 비트에 double ()이 필요하지 않습니까? 이것을 시도하지 않으면 (더 나은 방법이 있어야하지만)
insert into this_table_archive (id, field_1, field_2, field_3)
values
((select id from this_table where entry_date < '2001-01-01'),
((select field_1 from this_table where entry_date < '2001-01-01'),
((select field_2 from this_table where entry_date < '2001-01-01'),
((select field_3 from this_table where entry_date < '2001-01-01'));
INSERT INTO vendors (
name,
phone,
addressLine1,
addressLine2,
city,
state,
postalCode,
country,
customer_id
)
SELECT
name,
phone,
addressLine1,
addressLine2,
city,
state ,
postalCode,
country,
customer_id
FROM
customers;
참고 URL : https://stackoverflow.com/questions/5253302/insert-into-select-for-all-mysql-columns
반응형
'development' 카테고리의 다른 글
error UnicodeDecodeError : 'utf-8'코덱이 위치 0에서 바이트 0xff를 디코딩 할 수 없습니다 : 유효하지 않은 시작 바이트 (0) | 2020.07.26 |
---|---|
간단한 대화 상자를 사용하여 Python에서 파일 선택 (0) | 2020.07.25 |
TFS 체크인 오류-파일을 찾을 수 없습니다 (0) | 2020.07.25 |
백본보기 : 상위에서 이벤트 상속 및 확장 (0) | 2020.07.25 |
포인터 선언; (0) | 2020.07.25 |