2011-09-25 6 views
1

이 질문은 여러 번 답변되는 것으로 보입니다. 그러나 내가 필요한 기준과 일치하는 것은 없습니다.한 테이블에서 다른 테이블로 데이터 이동

선택한 조건을 두 번 실행하지 않고 Mysql의 원래 테이블에서 행을 선택하고 삭제할 수 있습니까?

예를 들어 나는이 작업을 수행 할 수 있습니다 : 매우 복잡하고 장기 실행 쿼리 쿼리의 '일치하는 부분'에 그러나

INSERT INTO main (SELECT * FROM temp WHERE age > 30) 
DELETE FROM cache WHERE age > 30 

는 두 번 실행됩니다 난에 대한 해결책이 있어야한다고 생각하면서 이미 어쨌든 가져 왔기 때문에 선택한 항목을 삭제하십시오.

제 질문은 가능합니다. 그렇다면 가능합니다. 방법?

답변

0

아니요. 그렇게 할 수 없습니다.

작업 사이에 테이블의 무결성이 걱정된다면 트랜잭션을 사용해야합니다.

+0

내 관심사는 성능이었습니다. 쿼리를 실행하는 데 걸리는 시간은 상당히 길다. 두 번 실행하면 더 오래 사용할 수 있습니다. – Matthijn

+0

글쎄, 만약 ** trul **의 무언가가 정말로 복잡하다면 (예를 들어 초기 예제보다 더 복잡한 것처럼), 삭제하고자하는 칼럼의 인덱스가 있는지 확인한 다음, 3 개의 질의로 질의한다. 세 가지 빠른 쿼리는 두 개의 드레닝 쿼리보다 부드럽을 수 있습니다. 정확하게 색인을 생성했는지 확인하고 모든 것이 잘되어야합니다. – Layke

관련 문제