반응형
MySQL: 한 테이블에서 레코드 수를 세고 다른 테이블 업데이트
2개의 테이블/엔트리가 있습니다. 아주 간단한 시나리오입니다.
테이블 시인 - 열: id, 시인, 국가
테이블 국가 - 열: ID, 국가, 카운트
기본적으로 국가와 시인 사이에는 하나와 많은 사람 사이의 지도가 있습니다.예를 들면, 60개국에서 온 1000명의 시인들이 있습니다.시인의 각 시인은 한 국가에 속한 국가의 정체성을 포함하는 국가 분야에 따라 한 국가에 할당됩니다.
국가의 계수 필드에는 이 국가의 시인의 수가 포함되어 있습니다.
제 질문은 어떻게 하나의 SQL 쿼리를 사용하여 시인의 국가별 시인 수를 세고 그 국가의 해당 수를 업데이트할 수 있을까 하는 것입니다.
노력했습니다.
UPDATE poets, nations SET nations.count = COUNT(poets.id) GROUP BY poets.nation HAVING poets.nation = nations.id
그러나 #1064 오류가 발생합니다.또한 WHERE 조항을 어딘가에 결합하려고 했지만 여전히 작동을 거부합니다.
감 잡히는 게 없어요?
하위 쿼리 사용:
UPDATE nations
SET count = (
SELECT COUNT(id)
FROM poets
WHERE poets.nation = nations.id
GROUP BY id
);
GROUP BY, CF가 필요하지 않습니다.
UPDATE nations SET count = (
SELECT COUNT(id) FROM poets
WHERE poets.nation = nations.id);
아니면, GROUP BY와 함께, 하위 쿼리는 시인이 없는 국가들에게 NULL을 반환할 것입니다.GROUP BY가 없으면 하위 쿼리는 이 경우 0을 반환합니다.
언급URL : https://stackoverflow.com/questions/1216175/mysql-count-records-from-one-table-and-then-update-another
반응형
'programing' 카테고리의 다른 글
형식이 오래되었거나 형식 라이브러리가 잘못되었습니다. (HRESULT 예외: 0x80028018 (TYPE_E_INVDATAREAD) (0) | 2023.09.19 |
---|---|
:hover와 결합 후 :fir (0) | 2023.09.19 |
mysqldump with --where clause is not working (0) | 2023.09.19 |
리소스 ID에서 리소스 이름을 가져오는 방법 (0) | 2023.09.19 |
Oracle에서 인덱스가 클러스터된 것입니까 아니면 클러스터되지 않은 것입니까? (0) | 2023.09.19 |