2013-08-13 3 views
0

열 중 하나가 이미있는 값에서 해당 열의 MAX의 함수 인 새 행을 삽입하려고합니다. 임시 변수를 설정하고 두 개의 쿼리를 수행하여 PHP로 쉽게이 작업을 수행 할 수 있음을 알고 있지만 순수 MySQL에서이 작업을 수행 할 수 있는지 궁금한 내용이었습니다.기존 행과 관련된 값으로 새 행 삽입

가 우선이 (쿼리가 훨씬 더 포함하고, 참고,하지만이 엉망으로 된 것입니다)이 시도 :

다음과 같은 오류 발생
INSERT INTO tbl 
(column_name) 
VALUES (
    max(column_name) + 6 
) 

: 다음

1111 Invalid use of group function

내가 시도를 : 다음과 같은 오류가 발생

INSERT INTO tbl 
(column_name) 
VALUES (
    (SELECT max(column_name) + 6 FROM tbl) 
) 

:

1093 You can't specify target table 'tbl' for update in FROM clause

+1

그냥 값을 꺼내(). table2 (columnname)에 삽입하여 table1의 항목을 선택하십시오. – developerwjk

+0

@developerwjk 앞서 언급 한 것처럼 삽입 할 다른 많은 것들이 있습니다. 이것은 단지 열 중 하나입니다. 쿼리에는 모두 약 20 개의 열이 있지만 단순화를 위해 하나만 포함했습니다. – Mike

+0

@developerwjk이 부분은 table1과 table2가 아니며 둘 다 table1입니다. – Jordan

답변

0
INSERT INTO tbl (col, somecharcol, someintcol,somedatecol) 
SELECT MAX(col)+6,'literalstring',123,'2013-06-12' FROM tbl; 
+0

하나의 질문. 거기에 값을 삽입 할 열을 지정할 수있는 방법이 있습니까? 아니면 'tbl'에 모든 열을 정확한 순서로 포함시켜야합니까? – Mike

+0

그래, 그것을 편집뿐만 아니라 @boen_robot 준 링크를 봐 : [그것은 문서에있는 모든] (http://dev.mysql.com/doc/refman/5.6/en/insert-select.html) – Wrikken

관련 문제