访问 2013 UPDATE 查询
Posted
技术标签:
【中文标题】访问 2013 UPDATE 查询【英文标题】:Access 2013 UPDATE query 【发布时间】:2017-07-21 06:06:36 【问题描述】:嘿,我正在学习 Access 2013,如果找到特定号码,我正在尝试构建更新查询,我已经做到了,以便我为一个号码工作,但我有更多识别号码需要在同一个查询中更新,并且我不知道如何管理。
这是我的SQL
,下面的数字是我要识别的号码,然后转至REQUEST
或RESPONSE
,识别号码始终为字符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 编号的位置附加 [重复]