2013-04-17 4 views
4

나는이 간단 할 것이라고 생각하지만 나는 하나의 테이블 tbl1을 가지고 있고 그것은 열 id, otherstuff, num을 가지고 주위 내 머리 ...MySQL : 다른 테이블의 COUNT 개가있는 UPDATE 테이블?

을 얻을 수 없습니다.

다른 테이블 tbl2이 있는데이 테이블의 열은 id, info입니다.

는 내가 원하는 것은 tbl2에서 같은 id와 행의 수와 동일한 tbl1num 열을 만들 수 있습니다. 이런 종류의 :

UPDATE tbl1 SET num = 
(SELECT COUNT(*) FROM tbl2 WHERE id=tbl1.id) 

아이디어가 있으십니까?

+2

당신은 그것을 시도 줄 했습니까? [this] (http://stackoverflow.com/a/1216185/1037210) 답변과 많이 유사합니다. – Lion

+0

얼마나 이상한가요? 내가 쓴 것은 올바른 SQL이라고 생각하지 않았다. – Alasdair

답변

8

당신의 납입 열이 유효한 숫자이기 때문에 쿼리가 작동합니다 입력 한 경우 :

UPDATE tbl1 SET num = (SELECT COUNT(*) FROM tbl2 WHERE id=tbl1.id) 
10
UPDATE tbl1, (select id, count(*) as idCount from tbl2 group by id) as t2 
SET tbl1.num = t2.idCount 
WHERE tbl1.id = t2.id; 
+0

큰 테이블에서 매우 빠른 완벽한 솔루션입니다. 고맙습니다. – DaveK

관련 문제