programing

MySQL: 한 테이블에서 레코드 수를 세고 다른 테이블 업데이트

telebox 2023. 9. 19. 21:01
반응형

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

반응형