2014-02-05 2 views
0

다음은 하나의 테이블에 삽입하고 다른 테이블의 특정 값을 삽입하는 쿼리입니다. 그러한 쿼리를 작성하는 적절한 방법이 무엇인지 알려주시기 바랍니다.이 쿼리의 문제점은 무엇입니까

Insert into c_table (name,number,class) 
values ('1','2',select count(id) from thetable) 
+3

SELECT를 INSERT와 함께 사용하는 예가 있습니까? 아니면 여기에 새 groud를 위반하고 있습니까? – Strawberry

답변

1

아주 가까이, 감사,하지만 괄호에 하위 쿼리를 둘러싸는 시도 :

insert into c_table (name,number,class) 
values ('1','2',(select count(id) from thetable)) 
+0

매우 가까이에 닫히는 것을 의미합니다. – zee

+1

@NullSoulException 그가 언급 한 쿼리가 실제로 작동했습니다. 이 쿼리의 문제점은 무엇입니까? – user3027531

+1

@ user3027531 두 개 이상의 행을 반환하는 하위 쿼리를 변경하자 마자 MySQL이 무엇을 말할 것입니까? 나는 그것이 카우보이 스타일의 그룹을 좋아한다고는하지만, 카우보이 스타일의 서브 쿼리가 마음에 들지는 모르겠다. –

3

을 대신 VALUES() 절의의 SELECT 구성 요소의 첫 번째 두 개의 열 정적 값으로 INSERT INTO ...SELECT 패턴을 사용합니다. SELECT 목록의 첫 번째 두 의사 열의 값은 항상 같지만 COUNT()의 값은 thetable.과 함께 동적으로 변경됩니다. 문에 필요한 경우 WHERE 절을 추가해야합니다.

INSERT INTO c_table (name, number, class) 
    SELECT 
    '1' AS name, 
    '2' AS number, 
    COUNT(id) AS class 
    FROM thetable 
/* WHERE <conditions if necessary> */ 
관련 문제