Oracle:如何在select语句中使用if-then

Oracle:如何在select语句中使用if-then,oracle,conditional,Oracle,Conditional,在UNION中,我希望执行一个条件选择,如ur.MENU\u relationship\u ID=1,则用户ID应选择为NULL,否则必须检索“LEO\u USER\u RIGHTS”表中的原始值 我该怎么做?请帮忙 Krishnik如果你想在一个联盟中结合基于第一个表的东西,我想你只能通过重复这样的事情来实现: select ma.TITLE,ma.ID as aid,ur.USER_ID from LEO_MENU_ACTIVITY_RELATION mr inner join LEO

在UNION中,我希望执行一个条件选择,如ur.MENU\u relationship\u ID=1,则用户ID应选择为NULL,否则必须检索“LEO\u USER\u RIGHTS”表中的原始值

我该怎么做?请帮忙


Krishnik

如果你想在一个联盟中结合基于第一个表的东西,我想你只能通过重复这样的事情来实现:

select ma.TITLE,ma.ID as aid,ur.USER_ID  
from LEO_MENU_ACTIVITY_RELATION mr 
inner join LEO_MENU_MASTER mm on mm.ID=mr.MENU_ID 
INNER join LEO_MENUACTIVITY ma on mr.ACTIVITY_ID=ma.ID
LEFT OUTER JOIN LEO_USER_RIGHTS ur on ma.ID=ur.MENU_RELATION_ID and ur.MENU_ID=mm.ID and ur.USER_ID='141' 
where mm.ID='1'  
UNION (SELECT 
       'List' as TITLE, 
        1 as ID, 
        case (WHEN ur.MENU_RELATION_ID=1 THEN NULL ELSE USER_ID END)as USER_ID 
     from 
LEO_USER_RIGHTS)

如果经常使用,我会创建一个视图,以避免重复代码。在ORACLE中(我不知道其他SQL方言如何使用),有一个WITH语句可以让您创建一种“临时视图”。

除了结尾前后出现一组神秘的括号外,该大小写表达式看起来是正确的。您遇到了什么问题?为了澄清,请删除这些括号:当ur.MENU\u relationship\u ID=1时,为空,否则用户ID End您将正确执行。问题在哪里?你是说你想要一个基于工会的条件吗?
select ma.TITLE,ma.ID as aid,ur.USER_ID  
from LEO_MENU_ACTIVITY_RELATION mr 
inner join LEO_MENU_MASTER mm on mm.ID=mr.MENU_ID 
INNER join LEO_MENUACTIVITY ma on mr.ACTIVITY_ID=ma.ID
LEFT OUTER JOIN LEO_USER_RIGHTS ur on ma.ID=ur.MENU_RELATION_ID and ur.MENU_ID=mm.ID and ur.USER_ID='141' 
where mm.ID='1'  
UNION (SELECT 
       'List' as TITLE, 
        1 as ID, 
        case (WHEN ur.MENU_RELATION_ID=1 THEN NULL ELSE USER_ID END)as USER_ID 
     from 
 LEO_MENU_ACTIVITY_RELATION mr 
inner join LEO_MENU_MASTER mm on mm.ID=mr.MENU_ID 
INNER join LEO_MENUACTIVITY ma on mr.ACTIVITY_ID=ma.ID
LEFT OUTER JOIN LEO_USER_RIGHTS ur on ma.ID=ur.MENU_RELATION_ID and ur.MENU_ID=mm.ID and ur.USER_ID='141' 
where mm.ID='1'  
)