使用mySQL更新多行

bea*_*ear 4 mysql sql-update

我有一个看起来像这样的表:

property   propertyid  value
 active     1           1
 datastore  2           apc
Run Code Online (Sandbox Code Playgroud)

如何在不更新所有行的情况下制定SQL查询来更新几行.IE,如果有6行,更新2,3和4但不是1,5和6?

谢谢.

Ran*_*ray 9

如果您在具有相同值的所有行上更新的列相同,则可以使用此类查询轻松完成.

UPDATE property SET value=5 where propertyid IN(2,3,4)
Run Code Online (Sandbox Code Playgroud)

这会将值5设置为属性id为2,3或4的所有行.

如果要使用不同的值更新不同的行,我恐怕您必须编写单独的SQL语句.您可以使用CASE语句来提供SQL查询,但使用简单的SQL查询可以实现更高的可读性和可维护性.

假设您正在从应用程序操作数据库,我很确定无论您将使用何种编程语言,都可以轻松编写1个SQL语句并循环,替换值并执行查询或附加所有SQL更新对字符串的语句(循环时)并将其传递给数据库以立即执行.对不起,我不知道是否会对另一方造成重大的性能影响,但我相信一次性执行会对性能产生一些好处.