在Oracle中的CASE语句中选择和更新语句

时间:2015-01-20 11:12:31

标签: sql oracle

我有两张桌子。

MAIN_TABLE

SUB_ID SUB_ADDR_ID 47587 254875 47859 524858 47950 651681 47582 315788 54495 254879

Sub_master

SUB_NAME SUB_ID SUB_ADDR_ID PRIMARY ABC 47587 254875 Y
ABC 47857 254876 N
CDE 47858 256587 Y
EFG 47859 524584 Y
EFG 47859 524858 N
GHI 54495 255485 Y
GHI 54495 254879 N

我必须从第一个表中选择所有记录,将SUB_ADDR_IDsub_master表进行比较,以检查更新值是否为主要天气。如果不是主要的,我必须更新主表中的主要值。如何在单个查询中实现此目的。

1 个答案:

答案 0 :(得分:0)

您可以在where子句中进行过滤。以下是使用exists

的示例
update main_table mt
    set <col> = <value>
    where exists (select 1
                  from sub_master sm
                  where sm.sub_id = mt.sub_addr_id and
                        primary <> 'Y'
                 );