假设我有一个表tbl列ID和标题。 我需要改变标题列的所有值:是否可以使用单个UPDATE SQL语句执行多个更新?
- 从 'A1' 到 'A1',
- 从 'A.1' 到 'A1',
- 从“B-1 '到'b1',
- 从'b.1'到'b1'。
现在,我正在执行两个UPDATE语句:
UPDATE tbl SET title='a1' WHERE title IN ('a-1', 'a.1')
UPDATE tbl SET title='b1' WHERE title IN ('b-1', 'b.1')
这是不是在所有的问题,如果表是小,单个语句完成,在不到一秒钟你只需要执行几条语句。
你可能猜到了 - 我有一个巨大的表格来处理(一个语句在大约90秒内完成),并且我有大量的更新来执行。
那么,是否有可能合并更新,因此它只会扫描一次表?或者也许,在这种情况下有更好的方法来处理。
编辑:请注意,我正在使用的真实数据以及我必须执行的数据更改并非那么简单 - 字符串更长,并且它们不遵循任何模式(它是用户数据,所以不能做出任何假设 - 可以是任何事情)。
因此,从你的编辑评论推断,字符串本身可以是不同的,但你尝试的更新是否遵循一种模式?如果是这样,那是什么?如果什么都没有模式,那么没有解决方案,你必须单独编码每个独特的更新 – 2009-01-05 14:51:14
我有一个*正确*值的列表,并且我有一个明确指定的错误*值列表(以及哪个错误的值必须是改成正确的值)。所以是的 - 更新确实有一个模式。简而言之 - 每次更新都会更改一个值,但前提是旧值在指定的值列表中。 – Paulius 2009-01-06 15:37:04