[英]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.