2016-02-11 79 views
0

過濾器我有一個表訂單(OID,訂單類型,ODEP,ReqUser)MySQL查詢:使用條件

我想篩選象下面這樣的邏輯:

SELECT * FROM Orders if (Ordertype='confidential') filter by ReqUser='$UserID' else filter by ODep 

我不知道是否有可能!

回答

1

在這種情況下,你通常可以用(a AND b) OR ((NOT a) AND c)取代if a then b else c,就像這樣:

SELECT * 
FROM Orders 
WHERE (Ordertype='confidential' AND ReqUser='$UserID') 
    OR (Ordertype<>'confidential' AND ODep) 
; 

另外,根據您的數據,這可能會工作,以及:

SELECT * 
FROM Orders 
WHERE ReqUser='$UserID' 
    OR (Ordertype<>'confidential' AND ODep) 
; 

或本:

SELECT * 
FROM Orders 
WHERE ODep AND (ReqUser='$UserID' OR Ordertype <> 'confidential') 
; 
+0

不,如果請求的ReqUser不存在,該怎麼辦? – dnoeth

+0

@dnoeth然後,它會根據任何「ODep」計算結果進行過濾。 – Uueerdo

+1

您可能希望在第二個「OR」條件中包含Ordertype <>'confidential'條款。 – Marvin