1
다른 테이블의 검색을 기반으로 SQL 테이블에 두 개의 값을 설정하려고합니다.25,000 개가 넘는 항목으로 테이블 업데이트
UPDATE $postmeta
SET meta_key = '_bbps_topic_status',
meta_value = '1'
WHERE post_id IN (
SELECT ID
FROM $posts
WHERE post_type='topic'
)
내가 25,148 행의 전체 테이블에 대해이 작업을 수행 할 수 있지만이 경우에도 서버의 모든 한계를 늘린 후 메모리 오류가 발생합니다 : 내 쿼리는 다음과 같다. 나는 MySQL이 500 개의 그룹으로 작업을 배치하는 것을 허용하지 않는다는 것을 알고 있지만이 작업을 작은 덩어리로 나눌 스크립트를 작성하는 방법은 무엇입니까? 사전에
감사합니다!
편집 :
UPDATE $postmeta
SET meta_key = '_bbps_topic_status',
meta_value = '1'
WHERE post_id IN (
SELECT ID
FROM $posts
WHERE post_type='topic'
AND DATE_SUB(
CURDATE(),
INTERVAL 30 DAY
) <= post_date
)
안녕하세요 - 나는 더 복잡한 쿼리를 추가했습니다. 당신이 사용하고있는 JOIN 명령에 그것을 어떻게 포함시키는 지 알아 내지 못했습니다. – RoboRob
@RoboRob이 표현의 결과를 비교하지 않는 동안'DATE_SUB' 부분을 사용하는 목적은 무엇입니까? –
30 일 이상 된 'topic'유형의 모든 게시물을 가져 오려고합니다. SELECT 문에서 실행했을 때, 내가 원했던 것처럼 보였습니다. – RoboRob