循环遍历结果集并在SQL中更改其结果
我是甲骨文的新手。 有人能告诉我如何实现以下场景吗 我有一个名为table1的表,其ItemID为ItemName。 和另一个具有ItemInventoryID ItemDescription的表清单 我想在select语句期间向表1添加一个临时列“ItemStatus” 并使用ItemID、ItemName和ItemStatus获取最终结果集 像这样的循环遍历结果集并在SQL中更改其结果,sql,sql-server,oracle,oracle10g,Sql,Sql Server,Oracle,Oracle10g,我是甲骨文的新手。 有人能告诉我如何实现以下场景吗 我有一个名为table1的表,其ItemID为ItemName。 和另一个具有ItemInventoryID ItemDescription的表清单 我想在select语句期间向表1添加一个临时列“ItemStatus” 并使用ItemID、ItemName和ItemStatus获取最终结果集 像这样的 select ItemID, ItemName, 'False' as ItemStatus from table1; (我希望Ite
select ItemID, ItemName, 'False' as ItemStatus
from table1;
(我希望ItemStatus最初为false。)
在获得输出之前,我需要更新此结果的每一行上的ItemStatus列。
基于以下条件
declare temp Number;
select count(*) INTO temp
from Inverntory
where ItemInventoryID = ItemID ///How do I get this ItemID for every row?
IF(temp>0)
THEN
UPDATE table1
SET ITEMSTATUS = 'True';
END IF;
我如何循环遍历的结果集
select ItemInventoryID, ItemName, 'False' as ItemStatus
from table1;
并根据我的条件更新ItemStatus值,最后得到输出
提前感谢,,
Frank假设ItemID是表1中的主键,并且它与库存有一对多关系:
select a.ItemID
,a.ItemName
,case when count(b.ItemInventoryID) = 0 then 'False' else 'True' end as ItemStatus
from table1 a
left join Inventory b on(
b.ItemInventoryID = a.ItemID
)
group
by a.ItemID
,a.ItemName;
查询执行左联接,这意味着无论是否与库存匹配,表1中的行仍然返回。CASE构造完成了临时列的工作 如果您正在学习Oracle,第一步应该是尝试在没有循环的情况下完成所有工作