访问 2013 UPDATE 查询

Posted

技术标签:

【中文标题】访问 2013 UPDATE 查询【英文标题】:Access 2013 UPDATE query 【发布时间】:2017-07-21 06:06:36 【问题描述】:

嘿,我正在学习 Access 2013,如果找到特定号码,我正在尝试构建更新查询,我已经做到了,以便我为一个号码工作,但我有更多识别号码需要在同一个查询中更新,并且我不知道如何管理。

这是我的SQL,下面的数字是我要识别的号码,然后转至REQUESTRESPONSE,识别号码始终为字符6 和2 长("MsgString",6,2)

    UPDATE tblMsgs SET tblMsgs.MsgType = IIf(Mid("MsgString",6,2)="22","RESPONSE","REQUEST")
    WHERE (((Mid([MsgString],6,2))="22" Or (Mid([MsgString],6,2))="14"));

   if 19 = REQUEST
   if 59 = RESPONSE
   if 22 = REQUEST
   if 62 = RESPONSE
   if 14 = REQUEST
   if 54 = RESPONSE
   if 2F = REQUEST
   if 6F = RESPONSE
   if 7E = REQUEST

我现在已经对每个数字进行了一次查询,但这并不好(无效!),有没有办法在同一个查询中完成所有这些操作?谢谢

【问题讨论】:

【参考方案1】:

您可以在IIf 中使用OR

UPDATE tblMsgs SET tblMsgs.MsgType = 
    IIf(Mid("MsgString",6,2)="22" OR Mid("MsgString",6,2)="59" OR ..., "RESPONSE", "REQUEST")
WHERE ...

但是在两个查询中执行此操作会更直接且可读性更好,一个用于“RESPONSE”,一个用于“REQUEST”。

您还可以使用the IN operator 指定值列表。

UPDATE tblMsgs SET tblMsgs.MsgType = "RESPONSE"
WHERE Mid([MsgString],6,2) IN ("22", "59", "62", ...)

UPDATE tblMsgs SET tblMsgs.MsgType = "REQUEST"
WHERE Mid([MsgString],6,2) IN ("14", "19", "22", ...)

(您的列表似乎有错误,两者都定义了“22”)

【讨论】:

谢谢!两个查询现在更好了!不知道“IN”功能,现在它完美! 只是一个小问题,你不知道这将如何被翻译成 python 3.6 语法以便我工作?我只是在编译时遇到语法错误... 不,不知道。但是如果你在 Python 中执行 SQL,那将是相同的 SQL 命令。如果双引号引起问题,可以用单引号 ' 替换双引号。@sesar

以上是关于访问 2013 UPDATE 查询的主要内容,如果未能解决你的问题,请参考以下文章

使用 JOIN / 多表 UPDATE 访问同一查询中先前更新的列的行为不同

通过 select_for_update 记录中的两个 ForeignKey 优化访问

访问连接中的 SQL 查询,还需要在有新 REF 编号的位置附加 [重复]

访问不允许SQL-Server列中的空值的INSERT或UPDATE(访问运行时错误3162)

从数据集中批量插入访问

访问 2013 年复杂的 SUM 查询/报告