我有一张桌子,比方说,100条记录。该表有两列。第一列(A)具有唯一值。第二列(B)具有NULL值
对于A栏中的4个元素,我想关联一些早先定义的值,它们也是唯一的。
我不关心B列中的哪个值与A列中的值相关联。我想将4个唯一值与另外4个唯一值相关联。基本上,就像我在excel中将一个值块从一列剪切并粘贴到另一列中一样。
如何在不使用游标的情况下执行此操作?
我想为所有行使用一个Update语句,而不是像现在一样对每行使用一个Update语句。
答案 0 :(得分:0)
试试这个:
getIntent()
在'预定义'中使用您想要的任何数字。表,只要它们是唯一的并且在原始表的columnA中的值范围内。
答案 1 :(得分:0)
如果您只是为了测试目的而填写表格,我想您可以:
A)使用A列本身的值(因为它已经是唯一的)。
B)如果它们不同,请在A列的值上使用一些函数来获得B列值(简单的,如(ColumnA * 10),这样就可以得到A)
C)使用"字典"创建临时表。为每个可能的A值设置B值,然后从该字典表上的值中查找表中所需的行。
无论如何,如果你进一步解释一下你的目的会更容易尝试建议你一个解决方案。
答案 2 :(得分:-2)
如果您的动物数据已经在数据库表中,那么您可以使用如下的单个更新语句:
update target_table t4
set columnb = (
select animal_name
from (select columna, animal_name
from (select rownum rowNumber, animal_name from animal_table) t1
join (select rownum rowNumber, columna from target_table t1 where columnb is null) t2
on t1.rowNumber = t2.rowNumber
) t3
where t4.columna = t3.columna
)
;
这可以通过从源表中选择序列号和动物名称,然后从目标表中选择序列号和columna值来实现。通过在序列号上加入这些记录,您可以保证每个columna值都能得到1个动物名称。然后,您可以将这些columna-to-animal记录加入目标表,以更新columnb。
有关从另一个表中的值更新一个表的更多背景知识,您可以考虑此处提供的解决方案:Update rows in one table with data from another table based on one column in each being equal。唯一的区别是,在您的示例中,您没有任何匹配目标表和动物名称表的列,因此您需要使用rownum创建任意的1对1记录匹配。
如果您的唯一选项位于文本文件或电子表格中,那么您可以将它们格式化为固定宽度的空格填充字符串,并使用rownum索引选择所需的字符串,如下所示:
update table_name
set columnb = trim(substr('mouse cat dog wolf ', rownum*6-6, 6))
where columnb is null;