删除查询错误消息:“指定包含您要删除的记录的表”

时间:2011-07-15 16:10:49

标签: sql ms-access sql-delete

如果记录也在表D中,我想删除表“T”中的所有记录,但是我收到错误消息“指定包含您要删除的记录的表”。

DELETE T.DISCOUNT_CODE, T.PART_ID, T.SELLING_UM, T.QTY_BREAK_1, T.QTY_BREAK_2, T.QTY_BREAK_3, T.QTY_BREAK_4, T.QTY_BREAK_5, T.QTY_BREAK_6, T.QTY_BREAK_7, T.QTY_BREAK_8, T.QTY_BREAK_9, T.QTY_BREAK_10, T.UNIT_PRICE_10, T.UNIT_PRICE_3, T.UNIT_PRICE_4, T.UNIT_PRICE_5, T.UNIT_PRICE_6, T.UNIT_PRICE_7, T.UNIT_PRICE_8, T.UNIT_PRICE_9, T.UNIT_PRICE_2, T.UNIT_PRICE_1, T.DEFAULT_UNIT_PRICE
 FROM SYSADM_DISCOUNT_PRICE AS T 
 INNER JOIN D ON T.PART_ID = D.PART_ID;

3 个答案:

答案 0 :(得分:4)

您没有在delete语句中指定列。您也无法加入删除语句。

基本上,您从表中删除。因此,将所有条件逻辑放在where子句中。

where recordid in(select .........)

答案 1 :(得分:4)

在Access中创建一个新查询,切换到SQL View并将其粘贴到:

DELETE 
FROM SYSADM_DISCOUNT_PRICE AS T
WHERE Exists (SELECT * FROM D WHERE D.PART_ID = T.PART_ID);

如果你“运行”(执行)查询,这应该有用。如果要在不实际执行DELETE的情况下查看受影响的行,可以将查询设计器视图切换到数据表视图。这将显示哪些行将被删除,但数据表视图仅显示它们...不会删除它们。但是,为了切换到数据表视图,您必须告诉查询设计器要显示哪些字段。您可以将第一行更改为DELETE *

另一种方法是将第一行更改为SELECT *以查看受影响的记录,然后在准备删除时更改回DELETE。

答案 2 :(得分:1)

MS Access确实允许您加入删除。因此,您可以在不命名列的情况下为此编写DELETE语句。

DELETE T.*
FROM SYSADM_DISCOUNT_PRICE AS T 
INNER JOIN D ON T.PART_ID = D.PART_ID;