MS Access 更新查询和带字符串参数的内部连接

Posted

技术标签:

【中文标题】MS Access 更新查询和带字符串参数的内部连接【英文标题】:MS Access update query and inner join with string parameter 【发布时间】:2018-10-07 06:03:31 【问题描述】:

请帮助我在 MS Access 中解决这个问题。我想使用statusid 更新我的user table,我将在userstatus table 中获得。

此查询在 mysql 中正常工作。为什么在 MS Access 中没有。带字符串参数的内连接不起作用。

UPDATE tbl_users AS us
  INNER JOIN tbl_userstatus AS ust ON ust.status = "Offline"  
SET us.statusid =  ust.statusid 
WHERE us.username = "francis";

【问题讨论】:

两个表之间的连接键是什么 加入密钥是statusid。但我想使用参数'Offline' 从我的表tbl_userstatus 中获取statusid 你遇到了什么错误? 我收到了这个JOIN expression not supported 【参考方案1】:

在 MS Access 中,您可以尝试:

UPDATE tbl_users AS us,   -- MS Access does not support explicit CROSS JOIN
       tbl_userstatus AS ust
    SET us.statusid =  ust.statusid 
    WHERE us.username = "francis" AND ust.status = "Offline";

在任一数据库中,您都可以使用:

UPDATE tbl_users
    SET statusid =  (SELECT ust.statusid FROM tbl_userstatus AS ust ON ust.status = "Offline")
    WHERE username = "francis";

这并不完全相同。但我假设tbl_userstatus 正好有一行带有“离线”——在这种情况下它们是等价的。

【讨论】:

【参考方案2】:

像下面这样尝试,假设statusid是两个表之间的连接列,并猜测你想使用status列的数据tbl_userstatus更新用户表的status

UPDATE us
SET    us.status =  ust.status 
FROM   tbl_users AS us
       INNER JOIN tbl_userstatus  AS ust  
              on us.statusid =  ust.statusid
         WHERE us.username = "francis"

【讨论】:

我想要的是在Inner Join 语句中使用一个字符串。像这样Inner Join table1 ON table1.column1 = 'myString'。 MS Access 不想要这种查询。

以上是关于MS Access 更新查询和带字符串参数的内部连接的主要内容,如果未能解决你的问题,请参考以下文章

通过 MS Access 例程更新 SQL Server(内部连接错误)

在连接上更新时出现MS Access语法错误

MS Access 更新查询不断询问“参数值”

JET OLEDB 参数如何将字符串与 Access DB 中的文本字段进行比较

Excel VBA 连接到 MS Access(读/写)到多用户表/查询

将 Excel 连接到 Access