【问题标题】:Access 2013 UPDATE query访问 2013 UPDATE 查询
【发布时间】: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

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

【问题讨论】:

    标签: sql ms-access ms-access-2013


    【解决方案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
    猜你喜欢
    • 1970-01-01
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-10
    相关资源
    最近更新 更多