2013-03-27 2 views
9

나는 158 개의 열과 22,000 개의 행이있는 테이블을 가지고 있으며 사용자가 입력하는 WHERE 조건에 따라 값을 동적으로 삽입하려는 다른 빈 테이블이 있습니다. suic_att> = 5 AND 성별 =이 'M'은INSERT 쿼리를 사용하여 한 테이블에서 다른 테이블로 행 복사

이 (말) 다시 나에게 약 9,000 기록을 제공 WHERE

SELECT * mygrist_tables에서 : SELECT 쿼리는 다음과 같이 보일 것입니다. 이 레코드를 다른 테이블 (이 필터링 된 데이터 만)에 삽입하고 싶습니다. 가능한가? 아무도 저에게 INSERT 쿼리가 어떻게 생겼는지, 그리고 158 개의 cloumns를 가진 다른 테이블을 생성해야하는지 또는 INSERT 쿼리를 사용하여 해당 열을 모두 동적으로 생성 할 수 있는지에 대한 아이디어를 줄 수 있습니까? 또한보기를 사용하여이 작업을 수행 할 수 있습니까, 아니면 테이블이 필수적입니까? 미리 감사드립니다!

+0

INSERT INTO는 ... SELECT ... –

+0

당신 같은 나에게 질의를하시기 바랍니다 줄 수 사용해야합니까? –

+2

아니, 네가 해결할 수있을 것 같아. –

답변

20

위의 SELECT 문과 INSERT 문을 실행하여 존재하지 않는 새 테이블로 결과를 얻으려는 것 같습니다. 그렇다면,이 작업을해야합니다 : 그들은 동일하지 않습니다에 선택적으로 당신은 열을 지정해야 할 수도 있습니다

INSERT INTO YourNewTable 
SELECT * 
FROM mygrist_tables 
WHERE suic_att>=5 AND gender='M' 

:

SELECT * INTO YourNewTable 
FROM mygrist_tables 
WHERE suic_att>=5 AND gender='M' 

그런 다음에 삽입 실행해야 할 것, YourNewTable가 이미 존재한다고 가정 .

편집 - 의견을 다시 읽기 및 SQL 문에서 새 테이블을 작성, DB는 MySQL을입니다 실현, 당신은 사용해야합니다

CREATE TABLE YourNewTable 
SELECT * 
FROM mygrist_tables 
WHERE suic_att>=5 AND gender='M'; 

http://dev.mysql.com/doc/refman/5.0/en/create-table.html

+0

사실, 새 테이블에 P_ID 열이 있는데이 테이블은 이전 테이블에 없습니다. 이 쿼리를 어떻게 업데이트 할 수 있습니까? 쿼리를 실행하려고하면이 오류가 발생합니다. 오류 코드 : 1136. 행 개수가 행 1의 값 개수와 일치하지 않습니다. –

+0

@SharadhaJayaraman - INSERT INTO YourNewTable (Col1, Col2 등) SELECT Col1, Col2 등 FROM ... - 불행히도이 경우 열 이름을 지정해야합니다. 행운을 빈다. – sgeddes

+0

158 열 모두? : –

3

당신은 SELECT INTO 사용할 수 있습니다 구문

SELECT * 
INTO MyNewTable 
FROM mygrist_tables WHERE suic_att>=5 AND gender='M' 

하지만 당신은 할 수 없습니다. 그런 식으로 이미 존재하는 테이블에 삽입하십시오. 테이블이 이미 존재하는 경우, 당신은

INSERT INTO MyOldTable 
([LIST OUT YOUR COLUMNS HERE]) 
SELECT [LIST OUT YOUR COLUMNS HERE] 
FROM mygrist_tables WHERE suic_att>=5 AND gender='M' 
+1

[열람 수는 여기에 있습니다] 란에 158 개의 열을 모두 하드 코드 할 수 있습니까? 이 일을하는 더 좋은 방법이 없을까요? –

+0

내가 말한 것은 @sgeddes가 그의 대답에서 언급 한 것이었다 ... 당신이 선택하고있는 테이블이 당신이 삽입하고있는 테이블과 다른 경우 열을 나열해야 할 것이다. 그들이 동일하면 * – rbedger

+0

을 사용할 수 있습니다. 정말 짜증납니다. 나는 비슷한 곤경에 처해있다. 수동으로 50 개의 다른 컬럼 이름을 타이핑하는 것은 MySQL의 멍청한 기대 인 것처럼 보인다. percona의 변경 도구가이 세상에서 말이되는 유일한 것 같습니다. – skrilled

관련 문제