이 질문에 대한 어색한 제목을 용서하십시오.조인이 일치하지 않거나 필드가 null 인 경우 테이블에 행 삽입
동일한 product_id 및 가격 (다른 날짜)의 항목을로드하지 않고 일부 제품의 가격을 추적하려고합니다. 160,000 개의 제품이 있으며 매일 업데이트가 실행됩니다.
제품
product_id, price, date_added, date_updated
(id Primary Key)
내가 그러나 나는에 의해 가입/선택을 정렬 할 수 없습니다, 다음 쿼리를하고있는 중이 야
product_id, price, date_updated
(product_id, price, date_updated primary unique)
price_index :
나는 다음과 같은 테이블이 가장 최근 날짜.
INSERT INTO price_index
(SELECT p.product_id,p.product_price,p.date_updated FROM products p
LEFT JOIN price_index pi ON (p.product_id = pi.product_id)
WHERE (p.product_price <> pi.product_price OR pi.product_price IS NULL))
나는이
JOIN (SELECT * FROM price_index ORDER BY date_updated DESC) pi
에 가입 교체하는 경우 먼저 올바른 정렬을 할 것입니다, 그러나 이것은 어떤 인덱스를 사용하지 않는 것 내 MySQL의 GUI 도구를 동결 유지합니다.
여기서 내가하려고하는 것을 달성하는 더 좋은 방법이 있습니까?
업데이트 : 업데이트 스크립트는 현재 가격으로 제품 테이블을 업데이트합니다. 그런 다음 price_index 테이블에서 확인/업데이트를 수행해야합니다.
왜 거기에 행을 주문해야하는지, 조인을 사용하여 쿼리에서 작동하지 않아야하는 이유는 전혀 없습니다. 어쩌면, 나는 당신의 문제를 정확하게 이해하지 못했을 것입니다. – David162795
David David, 가장 최근의 것이 아닌 price_index 테이블의 첫 번째 항목을 찾은 것으로 보입니다. 가장 최근의 price_index가 업데이트 된 제품 테이블 가격과 다른 경우에만 price_index 테이블에 다른 행을 추가하고 싶습니다. –
명확한 내용을 추가하지 않았습니다. –