두 테이블/엔티티가 매우 간단합니다.MySQL : 한 테이블의 레코드를 계산 한 다음 다른 테이블을 업데이트하십시오.
표 시인 - 열 : ID, 시인, 국가
표 국가 - 열 : ID가, 국가가, 계산
기본적으로, 하나의 매핑을 가지고국가에 시인 자연스럽게 많은 사람들에게. 예를 들어, 60 개국 출신의 1000 명의 시인이 있습니다. 시인의 각 시인은 국가 중 하나의 ID가 개의 국가 인을 포함하는 국가 필드에 의해 국가에 할당됩니다.
카운트 필드 에는이 국가의 시인 수 명의 시인이 포함되어 있습니다.
내 질문은 시인에있는 국가 별 시인 수를 세는 데 하나의 SQL 쿼리를 사용한 다음 해당 국가의 해당 개수를 업데이트하는 방법입니다.
UPDATE poets, nations SET nations.count = COUNT(poets.id) GROUP BY poets.nation HAVING poets.nation = nations.id
을하지만 #에게 1064 오류를 제공합니다
나는 시도했다. 또한 WHERE 절을 어딘가에 결합하려고했지만 여전히 작동을 거부합니다.아이디어가 있으십니까?
고마워요, 그 트릭을 작동! –
매우 큰 테이블 (500000 + 레코드)의 경우 매우 느려질 수 있습니다. – dusoft
또한 nations.count가 Null을 허용하지 않으면 경고가 발생할 수 있습니다. 이것을 막기 위해 IFNULL을 사용하십시오. UPDATE nations SET count = IFNULL ((count count (id) FROM 시인 WHERE poets.nation = nations.id GROUP BY id), 0); –