想要用一条语句更新多条记录,但每条记录更新的值并不同,而且没有规律,一条update语句能否搞定?举个例子:更新表tbl(为方便回复,假设表的主键为pk字段)上的字段col,想一条语句更新10条记录,但每条记录的col字段的更新目标值各不相同,且无规律,怎么写sql?

解决方案 »

  1.   

    我说的还不清楚吗?算了,我再具体点,要是还看不懂,我就无语了。假设表tbl有3列,pk为主键:pk  col1  col2 表中有若干条记录,现打算用一条update语句更新其中10条记录的col1字段,为了方便说明起见,假设我要更新的10条记录的pk字段的值分别为1,2,3,4,5,6,7,8,9,10,而准备更新的col1字段的目标值分别为10个互不相同且没任何规律的值,问该怎么写这条sql语句。说的很清楚了吧?
      

  2.   

    感觉你的这个内容是无解呢.update tbl set col1='?' where pk='1'
    一个句子你要更新成多个信息,且无规律.你的这些无规律的值是什么.
    如何写到这个sql呢.
      

  3.   

    感觉是无解如果有这个需求的话可以用工具(比如sqldeveloper等),直接展开这张表的所有数据,在工具里把数据全部改好,一次性提交,这时工具就会自动生成所有update语句,立刻执行并提交。
      

  4.   

    merge into tbl t
    using (select a.pk, b.value
             from (select rownum rn, pk from tbl) a,
                  (select rownum rn, value
                     from (select 23 value from dual
                           union all
                           select 34 value from dual)) b
            where a.rn = b.rn
              and a.pk = t.pk) c
    on (t.pk = c.pk)
    when matched then
      update set col1 = c.value;