繁体   English   中英

SQL Update语句(MS ACCESS)

[英]SQL Update statement (MS ACCESS)

我执行了以下语句,但是它仅更新除Assasin信条(空白值)以外的所有价格行。 此外,我表中其他未在下面定义的行也被清除(空白值)。 如果我更新2种产品,它似乎正常工作。 有什么事吗

(仅用于显示包装的换行符)

"UPDATE Products SET Price = IIf(Product = 'Crysis Wars'," +
CrysisWarsInput.Text +
", IIf(Product = 'Far Cry 2'," + FarCry2Input.Text +
", IIf(Product = 'Day of Defeat Source'," + DODSourceInput.Text +
", IIf(Product = 'GTA 4'," + GTA4Input.Text +
", IIf(Product = 'Asassins Creed'," + AssassinsCreedInput.Text + ")))))";

也许是因为您误记了“刺客信条”? 设置WHERE子句,或在最后一个IIF中将Price添加为默认值

"UPDATE Products SET Price = " +
"  IIf(Product = 'Crysis Wars',"          + CrysisWarsInput.Text +
", IIf(Product = 'Far Cry 2',"            + FarCry2Input.Text +
", IIf(Product = 'Day of Defeat Source'," + DODSourceInput.Text +
", IIf(Product = 'GTA 4',"                + GTA4Input.Text +
", IIf(Product = 'Assasins Creed',"       + AssassinsCreedInput.Text + ", Price)))))";
  • 表中未在下面定义的其他行

这就是WHERE子句的目的,以限制要更新的记录。

"UPDATE Products SET Price = " +
"  IIf(Product = 'Crysis Wars',"          + CrysisWarsInput.Text +
", IIf(Product = 'Far Cry 2',"            + FarCry2Input.Text +
", IIf(Product = 'Day of Defeat Source'," + DODSourceInput.Text +
", IIf(Product = 'GTA 4',"                + GTA4Input.Text +
", "                                      + AssassinsCreedInput.Text + ")))) +
" WHERE Product in ('Crysis Wars','Far Cry 2','Day of Defeat Source'," +
"  'GTA 4','Assasins Creed')";

您也可以使用SWITCH语句代替多个IIF。

重新刺杀信条-可能是错字。 非常仔细地查看单元格和查询中的值-例如,是刺客还是刺客?

重新其他(不在查询中); 您需要添加一个“ where”子句,否则它适用于表中的每一行; 这就是SQL的工作方式...我猜这里最好使用IN过滤器。 例子

where Product in ('some title', 'another title', ...)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM