mysql에 한 테이블에서 다른 테이블로 데이터를 삽입합니다.
한 테이블의 모든 데이터를 읽고 다른 테이블에 데이터를 삽입하고 싶습니다. 제 질문은
INSERT INTO mt_magazine_subscription (
magazine_subscription_id,
subscription_name,
magazine_id,
status )
VALUES (
(SELECT magazine_subscription_id,
subscription_name,
magazine_id
FROM tbl_magazine_subscription
ORDER BY magazine_subscription_id ASC), '1')
근데 에러가 나서
#1136 - Column count doesn't match value count at row 1
제발 도와주세요
INSERT를 사용할 수 있습니다.SELECT 구문SELECT 부분에서 직접 '1'을 따옴표로 묶을 수 있습니다.
INSERT INTO mt_magazine_subscription (
magazine_subscription_id,
subscription_name,
magazine_id,
status )
SELECT magazine_subscription_id,
subscription_name,
magazine_id,
'1'
FROM tbl_magazine_subscription
ORDER BY magazine_subscription_id ASC
한 테이블에서 다른 테이블로 모든 데이터를 삽입하려면 매우 간단한 SQL이 있습니다.
INSERT INTO destinationTable (SELECT * FROM sourceDbName.SourceTableName);
이런 식으로는 안 돼
쿼리를 사용하여 행을 삽입하려고 하면 모든 값이 쿼리에 있어야 합니다.
위의 문제를 삽입하고 싶은 경우magazine_subscription_id, subscription_name, magazine_id, status
선택 쿼리에는 다음과 같은 기능이 있습니다.magazine_subscription_id, subscription_name, magazine_id, status
1 그것은 불가능하다.
둘 중 하나를 삽입하려면 직접 값의 쿼리를 사용하여 삽입해야 합니다.
실제로 한 테이블에서 다른 테이블로 데이터를 복사하기 위한 mysql 쿼리는
Insert into table2_name (column_names) select column_name from table1
여기서 table1에서table2로 복사된 값
"id"와 같은 프라이머리 키가 있는 경우 이를 제외해야 합니다.예를 들어 내 php 테이블에는 id, col2, col3, col4 컬럼이 있습니다.id는 프라이머리 키이므로 이 코드를 실행하면 다음과 같습니다.
INSERT INTO php (SELECT * FROM php2);
다음과 같은 오류가 발생할 수 있습니다.
#1062 - Duplicate entry '1' for key 'PRIMARY'
해결책은 다음과 같습니다. "id" 키는 제외했습니다.
INSERT INTO php ( col2,col3,col4) (SELECT col2,col3,col4 FROM php2);
그래서 나의 새로운 php 테이블은 더 이상 모든 php2 테이블 행을 가지고 있다.
INSERT INTO mt_magazine_subscription (
magazine_subscription_id,
subscription_name,
magazine_id,
status )
VALUES (
(SELECT magazine_subscription_id,
subscription_name,
magazine_id,'1' as status
FROM tbl_magazine_subscription
ORDER BY magazine_subscription_id ASC));
이거 먹어봐.네가 잘못하고 있어.
INSERT INTO mt_magazine_subscription(
magazine_subscription_id,
subscription_name,
magazine_id, status) VALUES (
(SELECT magazine_subscription_id, subscription_name,
magazine_id,1 as status FROM tbl_magazine_subscription
ORDER BY magazine_subscription_id ASC)
)
INSERT INTO mt_magazine_subscription (
magazine_subscription_id,
subscription_name,
magazine_id,
status )
VALUES (
(SELECT magazine_subscription_id,
subscription_name,
magazine_id,'1' as status
FROM tbl_magazine_subscription
ORDER BY magazine_subscription_id ASC))
이것을 사용해 보세요.
INSERT INTO mt_magazine_subscription (
magazine_subscription_id,
subscription_name,
magazine_id,
status )
SELECT magazine_subscription_id,
subscription_name,
magazine_id,
'1'
FROM tbl_magazine_subscription
ORDER BY magazine_subscription_id ;
select 절에 하드 코드화된 값 사용
MySQL 조건의 한 테이블에서 다른 테이블로 데이터를 삽입하면 SQL Server에서도 동일하게 작동합니다.기존 데이터가 아닌 데이터만 업데이트됩니다.두 테이블 모두 구조가 동일하므로 열이 통과할 필요가 없습니다.
insert into table_A
select * from table_A_copy
where not exists
(
select * from table_A where table_A_copy.clm_a=table_A.clm_a and table_A_copy.clm_b=table_A.clm_b and table_A_copy.clm_c=table_A.clm_c
);
INSERT INTO destination_table (
Field_1,
Field_2,
Field_3)
SELECT Field_1,
Field_2,
Field_3
FROM source_table;
하지만 이것은 BAD MYSQL입니다.
대신 다음을 수행합니다.
drop the destination table: DROP DESTINATION_TABLE;
CREATE TABLE DESTINATION_TABLE AS (SELECT * FROM SOURCE_TABLE);
INSERT INTO mt_magazine_subscription SELECT *
FROM tbl_magazine_subscription
ORDER BY magazine_subscription_id ASC
언급URL : https://stackoverflow.com/questions/14907863/insert-data-from-one-table-to-another-in-mysql
'programing' 카테고리의 다른 글
Programming Error: 스레드에서 생성된 SQLite 개체는 동일한 스레드에서만 사용할 수 있습니다. (0) | 2023.01.10 |
---|---|
문자열에서 utf8이 아닌 문자 제거 (0) | 2023.01.10 |
파일의 선두에서 「」를 삭제하려면 어떻게 해야 합니까? (0) | 2023.01.10 |
Java에서 웹 페이지를 프로그래밍 방식으로 다운로드하는 방법 (0) | 2022.12.26 |
NuxtServerInit이 Vuex 모듈 모드에서 작동하지 않음 - Nuxt.js (0) | 2022.12.26 |