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(内部连接错误)
JET OLEDB 参数如何将字符串与 Access DB 中的文本字段进行比较