代码之家  ›  专栏  ›  技术社区  ›  bear

使用MySQL更新多行

  •  4
  • bear  · 技术社区  · 14 年前

    我有一张像这样的桌子:

    property   propertyid  value
     active     1           1
     datastore  2           apc
    

    我将如何构造一个SQL查询来更新一些行,而不更新所有行。例如,如果有6行,更新2、3和4,而不是1、5和6?

    谢谢。

    1 回复  |  直到 14 年前
        1
  •  9
  •   Ranhiru Jude Cooray    14 年前

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

    UPDATE property SET value=5 where propertyid IN(2,3,4)
    

    这会将值5设置为属性ID为2、3或4的所有行。

    如果要用不同的值更新不同的行,恐怕必须编写单独的SQL语句。您可以使用 CASE 但是,使用一个简单的SQL查询,它将具有很高的可读性和可维护性。

    假设您正在从一个应用程序中操作数据库,我确信无论您将使用什么编程语言,编写1个SQL语句和循环、替换值并执行查询或将所有SQL更新语句追加到字符串(循环时)并将其传递到数据库以同时执行所有操作。很抱歉,我不知道两者是否会对另一个产生重大的性能影响,但我相信立即执行所有操作会对性能产生一些好处。