基于另一个查询的 MS Access SQL 更新查询
Posted
技术标签:
【中文标题】基于另一个查询的 MS Access SQL 更新查询【英文标题】:MS Access SQL update query based on another query 【发布时间】:2015-09-24 14:18:54 【问题描述】:我的数据库有现有数据。我正在尝试实施某种安全权限系统。它不需要真正安全......只需限制每个级别可以有效更改的内容。从技术上讲......存在一个......但需要加强。
我需要为教师调整现有的权限级别。我有一个查询(qInstructors),它列出了类表中列为 Instructor 的任何人的 DISTINCT 查询。共有38位导师。
现在我需要更新 User 表来调整这 38 个人的权限......这就是我卡住的地方。一个简单的更新查询,没问题。但是我一定不能用正确的术语进行搜索,因为我找不到任何可以帮助我敲定 SQL 的东西。
UPDATE tblUserList
INNER JOIN tblUserList ON tblUserList.NTID = qInstructors.Instructor
SET tblUserList.Rights = 2
WHERE [NTID]=[Instructor];
当我尝试运行它时,我在 JOIN 中遇到语法错误。这超出了我的 SQL 知识范围...任何线索?
【问题讨论】:
【参考方案1】:我建议使用IN
:
UPDATE tblUserList
SET tblUserList.Rights = 2
WHERE [NTID] IN (SELECT [Instructor] FROM qInstructors);
JOIN
在UPDATE
子句中的使用因数据库而异。 IN
版本是 ANSI 标准,应该可以在 MS Access 和您可能使用的任何后端数据库中工作。
【讨论】:
【参考方案2】:您在join
子句中指定了tblUserlist
而不是qinstructors
。
UPDATE tblUserList
INNER JOIN qInstructors ON tblUserList.NTID = qInstructors.Instructor
SET tblUserList.Rights = 2
【讨论】:
这确实解决了错误,我可以查看匹配的结果行......但是我显然使用的是不可更新的查询并且实际上无法更新。【参考方案3】:在设计视图中创建查询。将类型更改为“更新查询”。
将您的目标表添加到查询中,并添加您现有的“给我讲师”查询。
从目标表中的 ID 拖一条线到查询返回的相应 ID。
将要更新的字段向下拖动到底部的网格中。在“更新至”字段中,输入“允许”或“真”或任何表示允许教师使用的内容。
【讨论】:
以上是关于基于另一个查询的 MS Access SQL 更新查询的主要内容,如果未能解决你的问题,请参考以下文章
使用 SQL 从另一个 Access 表更新 MS Access 表