MS Access SQL 根据另一个查询更新查询

MS Access SQL update query based on another query

我的数据库有现有数据。我正在尝试实施某种安全权限系统。它不需要真正安全......只需限制每个级别可以有效更改的内容即可。从技术上讲......存在......但需要加强。

我需要为讲师调整现有的权限级别。我有一个查询 (qInstructors),其中列出了 class table 中作为讲师列出的任何人的 DISTINCT 查询。一共38位导师

现在我需要更新用户 table 来调整这 38 个人的权限...这就是我遇到的问题。一个简单的更新查询,没问题。但我不能用正确的术语搜索,因为我找不到任何东西来帮助我敲定 SQL.

UPDATE tblUserList 
INNER JOIN tblUserList ON tblUserList.NTID = qInstructors.Instructor 
SET tblUserList.Rights = 2
WHERE [NTID]=[Instructor];

当我尝试 运行 时,我在 JOIN 中遇到语法错误。这超出了我 SQL 的知识范围...有什么线索吗?

您在 join 子句中指定了 tblUserlist 而不是 qinstructors

UPDATE tblUserList 
INNER JOIN qInstructors ON tblUserList.NTID = qInstructors.Instructor 
SET tblUserList.Rights = 2

在设计视图中创建查询。将类型更改为 "Update Query".

将您的目标 table 添加到查询中,并添加您现有的 "Give me instructors" 查询。

从您的目标 table 中的 ID 拖一条线到您的查询返回的相应 ID。

将要更新的字段向下拖动到底部的网格中。在 "Update To" 字段中,输入 "Allowed" 或 "True" 或任何表明教师允许的内容。

我建议使用 IN:

UPDATE tblUserList 
    SET tblUserList.Rights = 2
    WHERE [NTID] IN (SELECT [Instructor] FROM qInstructors);

JOINUPDATE 子句中的使用因数据库而异。 IN 版本是 ANSI 标准,应该可以在 MS Access 和您可能使用的任何后端数据库中使用。