다른 필드의 COUNT가 SQL인 열을 업데이트하시겠습니까?
다음 테이블을 준비했습니다.
Articles:
ID | TITLE | CONTENT | USER | NUM_COMMENTS
COMMENTS
ID | ARTICLE_ID | TEXT
다음과 같이 기사 테이블의 NUM_Comments 필드를 기사에 대한 코멘트의 개수로 업데이트하는 sql 문이 필요합니다.
update articles a, comments f
set a.num_comments = COUNT(f.`id`)
where f.article_id = a.id
위 sql이 작동하지 않아 Invalid Use for Group 함수 오류가 발생합니다.여기 MySQL을 사용하고 있습니다.
업데이트 문에 가입할 수 없습니다.그럴 것 같네요.
update articles
set num_comments =
(select count (*) from comments
where comments.article_id = articles.id)
이렇게 하면 전체 기사 표가 업데이트되며, 원하는 것이 아닐 수도 있습니다.하나의 기사만 업데이트하려는 경우 하위 쿼리 뒤에 'where' 절을 추가합니다.
이 정도면 될 겁니다.
UPDATE articles a SET num_comments =
(SELECT COUNT(*) FROM comments c WHERE c.article_id = a.id)
하지만 저는 댓글이 달렸을 때 한 개의 레코드만 업데이트하고 싶습니다.
UPDATE articles a SET num_comments =
(SELECT COUNT(*) FROM comments c WHERE c.article_id = 100) WHERE a.id = 100
카운트(*)에 문제가 있을 수 있습니다. 특히 카운트와 (*) 사이의 공백...
sqlite, pgsql에서 sql을 작업하는 것은 다음과 같습니다.
update articles
set num_comments =
(select count(id) from comments
where comments.article_id = articles.id)
열 수만 기준으로 업데이트하려면 다음과 같은 작업을 수행할 수 있습니다.
update articles,
(select count (*)
from comments
where comments.article_id = articles.id) as newtotals
set articles.num_comments = newtotals.count;
또는 ...롤링 카운트가 필요한 상황이 발생한 경우:
update articles,
(select (count (*)) + (articles.num_comments) as count
from comments
join articles on
comments.article_id = articles.id
group by articles.id) as newtotals
set articles.num_comments = newtotals.count;
일반적인 내부 조인 방식으로는 할 수 없지만 다음과 같은 다른 방식으로 할 수 있습니다.
1 - article table에서 ids를 모두 선택합니다.
2 - 반복하여 다음 명령을 실행합니다.
기사 업데이트 NUM_COMMENTs set NUM_COMMENTs = (댓글에서 count(id) 선택, id = $id), id = $id
그것을 더 향상시키기 위해, 첫번째 선택에서 모든 값을 선택하지 마세요, 특히 그 표가 너무 클 때, 당신은 기사들을 반복하고 반복 당 1000개의 레코드를 얻어야 합니다.이렇게 하면 DB 풀에서 정상적인 DB 쓰레드를 유지하고 대역폭도 절약할 수 있습니다.
언급URL : https://stackoverflow.com/questions/6135226/update-a-column-with-a-count-of-other-fields-is-sql
'source' 카테고리의 다른 글
오라클 개체 종속성 루프 (0) | 2023.11.05 |
---|---|
MySQL GUID/UUID 저장 (0) | 2023.11.05 |
도커 구성품 단일 컨테이너 구축 (0) | 2023.11.05 |
angular js에서 $parse 사용 (0) | 2023.11.05 |
HTML/CSS/JavaScript를 이용한 데스크톱 앱 개발 방법? (0) | 2023.11.05 |