2012-03-21 124 views
0

我有一些麻煩,我的查詢:我可以在一個查詢中使用不同和「in」嗎?

SELECT 
    * 
FROM 
    att 
WHERE 
    uid = "f6c507fe-8928-4780-8b54-819611435755" 
AND 
    item_position <> '99' 
AND 
    category IN('CAT1','CAT2'); 

的結果卻是一無所獲。當我刪除「item_position <>'99'AND」時,顯示一些項目。我認爲問題在於UNLIKE與IN ...有一些行分類爲「CAT1」和item_position「99」。這些行不應該顯示。

問候!

+1

當您刪除item_position檢查時,您可以顯示一些輸出嗎?這聽起來像你所有的CAT1和CAT2數據都有item_position = 99,但我肯定不能這樣,否則你不會問。也許看到一些數據會有所幫助。 – davidethell 2012-03-21 10:14:05

回答

3

嘗試:

SELECT 
    * 
FROM 
    att 
WHERE 
    uid = "f6c507fe-8928-4780-8b54-819611435755" 
AND 
    (item_position <> '99' OR item_position IS NULL) 
AND 
    category IN('CAT1','CAT2'); 

你提到的一些行是NULL。我記得,令人討厭的NULL值和<>傾向於在邏輯中恨對方。

+1

您也可以使用'NOT item_position <=>'99''。飛船運營商'<=>'執行NULL安全比較。 – Hammerite 2012-03-21 10:31:17

0

他修好了他自己的意見,但是這是他最終什麼樣的主意:

SELECT 
    * 
FROM 
    att 
WHERE 
    uid = "f6c507fe-8928-4780-8b54-819611435755" 
AND 
    (item_position <> '99' OR item_position is NULL) 
AND 
    category IN ('CAT1','CAT2'); 
+0

謝謝,但它不起作用。當我刪除「AND item_position <>'99'」時,顯示的行... 「item_position」在許多行中爲NULL。這是問題嗎? 「item_position <>'99'」無法顯示帶有「item_position」的行NULL – poldixd 2012-03-21 10:19:43

+0

這相當於askers原始查詢。 – Jim 2012-03-21 10:20:46

+0

好吧,這很簡單... item_position <> '99' 沒有顯示出與item_position NULL東西 選擇 * FROM ATT WHERE UID =「f6c507fe-8928-4780-8b54-819611435755 「 AND (item_position <>'99'或item_position IS NULL) AND category IN('CAT1','CAT2'); 感謝您的幫助! – poldixd 2012-03-21 10:22:21

相關問題