【问题标题】:MS Access update query and inner join with string parameterMS Access 更新查询和带字符串参数的内部连接
【发布时间】: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

标签: sql ms-access


【解决方案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 不想要这种查询。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多