2012-10-28 5 views
1

내가 로컬 Access 테이블에 대해이 삭제 쿼리를 실행하려고하고있다 "캔트 지정된 테이블에서 삭제",하지만 오류 메시지가삭제 쿼리 오류 메시지

지정된 테이블에서 삭제할 수 없습니다

를 얻을 수

복사하여 붙여 넣을 적절한 SQL을 입력하십시오.

DELETE RO.*, RO.STATUS, CO.ID, CO.PRINTED_DATE 
FROM tmpReleasedOrders AS RO 
LEFT JOIN SYSADM_CUSTOMER_ORDER AS CO ON RO.orderID = CO.ID 
WHERE (((RO.STATUS)="C" Or (RO.STATUS)="X")) OR (((CO.ID) Is Null)) OR (((CO.PRINTED_DATE) Is Null)); 

답변

1

이 쿼리는 SYSADM_CUSTOMER_ORDER이 ID에 고유 인덱스를 필요에 따라 사전에 당신에게 나다니엘을 대단히 감사합니다. 당신이 SYSADM_CUSTOMER_ORDER에 인덱스가없는 경우

DELETE ro.* 
FROM tmpReleasedOrders AS ro 
LEFT JOIN SYSADM_CUSTOMER_ORDER AS CO 
ON RO.orderID = CO.ID 
WHERE RO.STATUS="C" Or RO.STATUS="X" OR CO.ID Is Null OR CO.PRINTED_DATE Is Null 

, 당신은이 라인에서 뭔가를 사용할 수 있습니다

DELETE tmpreleasedorders.* 
FROM tmpreleasedorders 
WHERE status IN ("c", "x") 
OR orderid IN (
    SELECT orderid 
    FROM tmpreleasedorders AS ro 
    LEFT JOIN sysadm_customer_order AS CO 
    ON RO.orderid = CO.id 
    WHERE CO.id IS NULL 
    OR CO.printed_date IS NULL)