簡體   English   中英

Oracle SQL查詢中的條件

[英]Condition in oracle sql query

我有一個查詢

 select * from emp where emp.id in(1,2,3) and emp.sal>10000

僅當design.type ='Labor'時,我才需要向emp.sal> 10000添加邏輯,我嘗試如下所示但不起作用

select * from emp,design where emp.id in(1,2,3) and case when design.type='Labor' then emp.sal>10000 

我們可以實現嗎?

簡單:

select * from emp where emp.id in(1,2,3) and (design.type<>'Labor' OR emp.sal>10000)

如果design.type ='Labor',則emp.sal必須大於10000,條件為true。

這應該為您工作...

SELECT * FROM emp 
WHERE emp.id IN (1,2,3) 
   AND ((design.type = 'Labor' AND emp.sal>10000) 
        OR (design.type <> 'Labor'))

OR條件的簡化將是..

SELECT * FROM emp 
WHERE emp.id IN (1,2,3) 
   AND (design.type <> 'Labor' OR emp.sal > 10000)

您想查詢有高於10000薪水只有當類型為行labor完成的緣故,我們也都注明了不同type小號,我們不關心工資。 如果我們正式提出這一點,我們將得到:

(type = 'Labor' and salary > 10000) OR (type != 'Labor')

當然,可以簡化此布爾表達式-我們正在尋找行類型不同於Labor或薪水高於10000的行:

(salary > 10000) OR (type != 'Labor')

因此,如果我們將所有內容放在一起:

SELECT *
FROM   emp 
WHERE  (emp.id IN (1,2,3)) AND (type != 'Labor' OR sal > 10000)
  Try this.
  select * from 
  (
    select * from emp where id in (1,2,3) and design.type='Labor'
  )a
  where a.sal>10000;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM