2013-03-11 157 views
-1

我正在過濾器搜索,我可以組成一個查詢,但其AND部分沒有返回我正確的值,其返回正確的結果爲GPA,但它沒有給出正確的結果程度檢查因爲它返回所有記錄不適用「BSCS」在這裏過濾器是查詢代碼:SQL查詢返回錯誤的值

SELECT * 
FROM education 
WHERE gpa >= 2.10 
OR gpa =0 
AND degree = 'BSCS' 
OR degree = NULL 
+0

@Juhana沒得到你的觀點? – 2013-03-11 18:07:47

+0

您的查詢要求gpa> = 2.10或零gpa BSCS學位或沒有學位。所以只要gpa> = 2.10,你的查詢並不關心度數。 – 2013-03-11 18:10:41

+0

我如何修改我的查詢它的用戶不適用GPA或度過濾器和SQL應該返回所有記錄? – 2013-03-11 18:13:39

回答

7

它看起來像你需要添加一些括號:

SELECT * 
FROM education 
WHERE (gpa >= 2.10 OR gpa =0) 
AND (degree = 'BSCS' OR degree is NULL) 

如果你想在WHERE擴大條款,那麼你可以使用:

SELECT * 
FROM education 
WHERE 
(
    (gpa >= 2.10 OR gpa =0) 
    AND (degree = 'BSCS' OR degree is NULL) 
) 
OR 
(
    (gpa is null or gpa ='') 
    or (degree is null or degree = '') 
) 
+0

非常感謝:) – 2013-03-11 18:08:55

+0

我該如何修改我的查詢它的用戶不適用全球通/國家級過濾器和SQL應該返回所有記錄? – 2013-03-11 18:12:52

+0

確定,但請幫助我這個問題以及 – 2013-03-11 18:15:47

0

試試下面的代碼:

使用和/或條件時,爲了避免混淆始終把括號。 也是最好的方式來檢查,如果一個字段爲空爲WHERE myField IS NULL

SELECT * 
FROM education 
WHERE (gpa >= 2.10 OR gpa =0) 
AND (degree = 'BSCS' OR degree is NULL) 
+0

@Junaid阿赫塔爾如果您對解決方案感到滿意,請接受/投票。我的回答並不重複,但有人更新了代碼....哈哈 – 2013-03-11 18:17:41