안녕하세요 - 저는 MySQL 멍청입니다. 여러 비즈니스 목록이있는 테이블이 있는데 도시마다 몇 개의 목록이 포함되어 있는지와 함께 고유 한 도시 이름이 들어있는 cities라는 두 번째 테이블을 채우려고합니다.MySQL은 SELECT 문을 사용하여 이중화 키를 삽입합니다.
SELECT city,state,sum(count)
FROM (
SELECT city,state, 1 AS count FROM listings
) results
GROUP BY city
ORDER BY sum(count) DESC,city;
그러나, 지금은 테이블을 업데이트 할,하지만 적절한 문을 작동시킬 수없는 것 : 나는 그렇게처럼 나에게이 데이터 벌금을 유도 할 수있는 SELECT 문을 수행 할 수 있어요. 이것은 내가 가진 최신이지만 현재 "그룹 기능을 잘못 사용했습니다"라는 오류가 발생합니다.
INSERT INTO cities(city,state,size)
SELECT city,state,sum(count)
FROM (
SELECT city,state, 1 AS count FROM listings
) results
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), size=sum(count);
도움을 주시면 감사하겠습니다.
나는 우리가 방금 동일한 쿼리를 게시했다고 생각합니다. – Dereleased
흠,이 작동하지만 각 중복 도시 대 이전 항목을 업데이트하는 다른 항목을 추가하는 것으로 보인다. 나는 그것이 "ON DUPLICATE KEY UPDATE"명령문의 부분을 가짐으로써 내가 얻었던 것 같다. – sepulturkey
테이블을 먼저 TRUNCATE 할 때 DUPLICATE KEY가 필요하지 않습니다. 그러나 UN 중복 키 (실제로는 나쁜 접근 방식이 아님)를 원한다면 (도시, 주) PRIMARY 또는 UNIQUE 키가 있어야합니다. – longneck