2014-10-05 3 views
0

다른 테이블의 발생 횟수가있는 테이블 필드를 업데이트하려고하지만 지금까지 행운이 없습니다. 이것은 내가 무엇을 가지고 :각 행의 개수가 포함 된 SQL 업데이트

Update S 
SET Hours = Hours + COUNT(S.ID) 
FROM S, E 
ON S.ID = E.ID 
WHERE S.ID = E.ID 
GROUP BY S.ID; 

나는이 끔찍한 오류 처리를 사용하도록 강제하고 있습니다 만 구문 오류가있는 오류의 설명과 함께 저를 제공 할 수있는 프로그램. 이미 원하는 내용을 반환하는 select 문을 성공적으로 구현했습니다.

Select COUNT(S.ID) 
FROM S, E 
WHERE S.ID = E.ID 
GROUP BY S.ID; 

나는 여기 아주 간단한 것을 놓치고 있습니까?

답변

1
update s 
    set hours = 
     (select count(*) from e where e.id = s.id) 
+0

업데이트의 일부가 .. 영업 이익은 단지 당신이 그것을 수정하려는 :) –

+0

을 경우에 발생 횟수로 교체 그의 시간 열이 카운트를 추가하고자 누락 @JohnRuddell 그가 제공 한 선택 쿼리는 그가 원하는 카운트를 제공한다고 주장하지만 그렇게하지는 않습니다. "hours + count"는 그가 말하는 "잘못된 쿼리"내에 있습니다. 다른 곳에서는 카운트만으로 업데이트하려고한다고합니다. –

+0

나는 op가 그가 원하는 것을 반환한다고 말했기 때문에 그가 자신의 칼럼에 추가하고자하는 숫자 였다고 생각했기 때문에 나는 그것을 잘못 읽었을 것입니다. 그러나 그것은 또한 이제는 대체 할 수 있습니다. –

1
Update S 
JOIN 
(
    select id, COUNT(*) as cnt 
    from e 
    group by id 
) TMP ON S.ID = TMP.ID 
SET S.Hours = S.Hours + TMP.cnt 
관련 문제