Subquery
where 子句:如果 col x 的這個值確保 col y 是這個值
我覺得這對你們專家來說很容易!多年來我沒有做過任何高級 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)