在引用其他表时在单个表上使用Delete查询
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在引用其他表时在单个表上使用Delete查询相关的知识,希望对你有一定的参考价值。
我想运行删除查询以使用MS Access查询从Sharepoint列表中的表中删除某些数据。但是我想确保只根据另一个表的值从单个列表中删除。
该表是TMainData:它仅包含对其他表中的键字段的引用的数字字段,例如具有程序名称的TProgram,或具有联系点的TContact,或具有类似Site Director的标题的TPositionTitle。
所以TMainData条目看起来像ProgramID,它链接到TPrograms:4 ContactID,它链接到TContacts:42 PositionTitle,它链接到TPositionTitle:3
这告诉我,麻醉学(ProgramID 4)的Site Director(TPositionTitle 3)是John Smith(ContactID 42)。
这是它变得棘手的地方:我在TPrograms下有一个参考TProgramType。我想删除TMainData下的所有记录,它们链接到某个程序类型,因为该程序类型正在消失。但是......我不想删除程序本身(还有),只是在TMainData中引用该程序的行。
我看到这样做的“手动”方式是运行查询,以识别我想删除联系人的程序的ProgramID是什么,然后在仅引用TMainData查询的删除查询中使用这些ID。我想知道是否有一种方法可以使用参考数据,因为我可能必须在以后运行一些荒谬的更新查询,这需要相同的信息。
我挖掘了https://support.office.com/en-us/article/Use-queries-to-delete-one-or-more-records-from-a-database-A323BF1A-C9B4-4C86-8719-BE58BDF1B10C,但它似乎没有涵盖根据另一个表中引用的值从一个表中删除。
当您陈述时,您似乎已经明白了要达到预期结果所需要做的事情:
...运行查询,以确定我要删除联系人的程序的
ProgramIDs
是什么,然后在仅引用TMainData
查询的删除查询中使用这些ID。
如果我已正确理解您的描述,我会建议以下内容:
delete from tmaindata
where
tmaindata.programid in
(
select tprograms.programid
from tprograms
where tprograms.tprogramtype = 'YourProgramType'
)
在运行delete
查询之前,请始终备份数据 - 没有撤消。
以上是关于在引用其他表时在单个表上使用Delete查询的主要内容,如果未能解决你的问题,请参考以下文章