Subquery

where 子句:如果 col x 的這個值確保 col y 是這個值

  • August 21, 2014

在此處輸入圖像描述

我覺得這對你們專家來說很容易!多年來我沒有做過任何高級 SQL。

基本問題:

select
   *
from myTable
where ((if col1 = 'this', make sure col2 = 'that')
else, don't include it in the results)

我想將所有這些都包含在我的結果集中,除了第一行,因為where col1 = 'this' col2 doesn't = 'that'

我只想檢查col1 = 'this'我想在結果中包含的其他值的位置。

我如何在 SQL Oracle 中執行上述邏輯。我不想只使用普通 SQL 的 PL/SQL。我在想有一個聰明的方法可以做到這一點,而不需要一些奇怪的 if/then/else 語句

謝謝你,

邁克

怎麼樣

SELECT *
FROM myTable
WHERE NOT (ColX = 'this' and ColY <> 'that')

像這樣:

select * from myTable 
where colY = 'that' or colX <> 'this'

指定為的任何標準的標準實現A => B如下B or not A

更新

將此 CTE 用於範例數據:

with myTable as (
   select N,colX,colY from ( values
        (1,'this','hey')
       ,(2,'this','that')
       ,(3,'yup', 'yerp')
       ,(4,'yup', 'that')
   ) myTable(N,colX,colY)
)

和上面的這個查詢:

select * from myTable 
where colY = 'that' or colX <> 'this'

產量(根據需要):

N           colX colY
----------- ---- ----
2           this that
3           yup  yerp
4           yup  that

(3 row(s) affected)

引用自:https://dba.stackexchange.com/questions/74511