[SQL] MySQL의 : 한 테이블에서 레코드를 카운트 한 다음 다른 업데이트
SQLMySQL의 : 한 테이블에서 레코드를 카운트 한 다음 다른 업데이트
있어 두 테이블 / 기관, 매우 간단 시나리오.
표 시인 - 열 : ID, 시인, 국가
표 국가 - 열 : ID, 국가, 수
기본적으로, 시인에 대한 국가 자연스럽게 많은 하나의 매핑을 가지고있다. 예를 들어, 60 개국 1,000 시인이있다. 시인의 각 시인은 국가에서 국가의 하나의 ID가 들어있는 국가 필드에 의해 국가에 할당됩니다.
국가의 카운트 필드는이 나라에서 시인의 시인의 수를 포함합니다.
내 질문은 시인에 국가에 의해 시인의 수를 계산 한 SQL 쿼리를 사용하고 해당 국가의 해당 수를 업데이트하는 방법은?
나는 시도했다 :
UPDATE poets, nations SET nations.count = COUNT(poets.id) GROUP BY poets.nation HAVING poets.nation = nations.id
그러나 # 1064 오류가 있습니다. 또한 WHERE 절 어딘가에 결합하는 시도했지만 여전히 일에 거부합니다.
어떤 생각?
해결법
-
==============================
1.하위 쿼리를 사용합니다 :
하위 쿼리를 사용합니다 :
UPDATE nations SET count = ( SELECT COUNT(id) FROM poets WHERE poets.nation = nations.id GROUP BY id );
-
==============================
2.당신은 GROUP BY, CF 필요가 없습니다 :
당신은 GROUP BY, CF 필요가 없습니다 :
UPDATE nations SET count = ( SELECT COUNT(id) FROM poets WHERE poets.nation = nations.id);
또는 오히려, GROUP BY와 함께, 서브 쿼리하지 시인이 나라에 대해 NULL을 반환합니다. GROUP BY없이, 하위 쿼리는이 경우 0을 반환합니다.
from https://stackoverflow.com/questions/1216175/mysql-count-records-from-one-table-and-then-update-another by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 숫자 변환 VARCHAR 정렬 (0) | 2020.06.29 |
---|---|
[SQL] 어떻게 대소 문자를 구분 그룹 BY를 할까? (0) | 2020.06.29 |
[SQL] SQL ORDER 수치가 문자 (0) | 2020.06.29 |
[SQL] 오라클 : 같은 행의 다른 컬럼에서 선택 최대 값 (0) | 2020.06.29 |
[SQL] PHP에서 히어 닥 내에서 변수를 사용 (SQL 연습) (0) | 2020.06.29 |