2012-01-31 2 views
3

하나의 테이블에서 행을 집계하고 집계하여 다른 테이블에 삽입하고 집계 값을 업데이트하려고합니다. SQL 명령은 무엇입니까?중복 삽입시 INSERT SELECT 문에 대한 SQL 문법

INSERT INTO tbdetail (detail, views) 
(SELECT detail, SUM(views) AS viewsall 
FROM tb 
GROUP BY detail) 
//ON DUPLICATE KEY UPDATE views = views + viewsall <- how to update here? 
+1

을, * upsert *라고도합니다. –

답변

3

INSERT ... SELECT 문을 사용하면 MySQL의에서, 당신은 VALUES() 기능을 사용하여 SELECT 문의 값 중 하나를 참조 할 수 있습니다

INSERT INTO tbdetail (detail, views) 

SELECT detail, SUM(views) AS viewsall FROM tb GROUP BY detail 

ON DUPLICATE KEY UPDATE views = views + VALUES(views); 

더 많은 정보를 여기에 : 참고로 http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_values

+0

'field list'의 'viewsall'알 수없는 열 – DrXCheng

+0

Ah! 나는 단지 * 잡았을 것이다 ...'VALUES()'의 매개 변수는'SELECT' 필드 이름이 아닌'INSERT' 필드 이름과 일치해야합니다. 사과! /결정된 –