2012-10-28 59 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

此查询取决于其对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 

如果你没有对SYSADM_CUSTOMER_ORDER索引,你可以在这些线路上使用的东西:

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)