2013-05-31 58 views
0

我有一個查詢工作很好,直到我添加一個單一的短語tot他where子句。我已經把這句話設置爲:p.group_size <> 8772663552一個荒謬的不平等。兩個'False'語句具有不同的結果MySQL

查詢失敗找到與相應的最後一個名稱的記錄備案:巴拉蘇布蘭馬尼安

SELECT DISTINCT p.id, 
       p.last_name, 
       first_name, 
       corporate_name, 
       city, 
       state,   
       e.full_name, 
       type, 
       l.current_step, 
      l.current_step_date, 
FROM prospect AS p 
     LEFT OUTER JOIN lettherebelight l 
        ON p.id = l.prospect_id 
     LEFT OUTER JOIN employee e 
        ON p.id_ofproducer = e.id 
WHERE p.group_size <> 8772663552 
     AND type IN ('Prospect', 'Suspect') 
     AND (last_name LIKE 'Balasubramanian' 
       OR corporate_name LIKE 'Balasubramanian' 
       OR first_name LIKE 'Balasubramanian') 

但是這一次成功(注意單行差)

SELECT DISTINCT p.id, 
       p.last_name, 
       first_name, 
       corporate_name, 
       city, 
       state, 
       e.full_name, 
       type, 
       l.current_step, 
      l.current_step_date, 
FROM prospect AS p 
     LEFT OUTER JOIN lettherebelight l 
        ON p.id = l.prospect_id 
     LEFT OUTER JOIN employee e 
        ON p.id_ofproducer = e.id 
WHERE type IN ('Prospect', 'Suspect') 
     AND (last_name LIKE 'Balasubramanian' 
       OR corporate_name LIKE 'Balasubramanian' 
       OR first_name LIKE 'Balasubramanian') 

或者如果我改變從一行p.group_size <> 8772663552p.ID> 0它工作得很好:

SELECT DISTINCT p.id, 
        p.last_name, 
        first_name, 
        corporate_name, 
        city, 
        state,   
        e.full_name, 
        type, 
        l.current_step, 
       l.current_step_date, 
    FROM prospect AS p 
      LEFT OUTER JOIN lettherebelight l 
         ON p.id = l.prospect_id 
      LEFT OUTER JOIN employee e 
         ON p.id_ofproducer = e.id 
    WHERE p.ID > 0 
      AND type IN ('Prospect', 'Suspect') 
      AND (last_name LIKE 'Balasubramanian' 
        OR corporate_name LIKE 'Balasubramanian' 
        OR first_name LIKE 'Balasubramanian') 

p.group_size <> 8772663552到p.ID> 0均爲真。他們爲什麼會產生不同的結果?我錯過了什麼?

+1

。 。它們都是* false *,所以id始終爲零或小於零?我會認爲他們總是如此。 –

+0

什麼數據類型是p.group_size? – Barmar

+0

如果你得到一個空的結果集或者你得到錯誤,那麼你的意思是什麼「不工作」或者他們是「假」? –

回答

1

我認爲原因是group_size可以採取NULL值。在這種情況下,您的表達式被評估爲NULL,在布爾上下文中將其視爲FALSE。

+0

NULLs .....我在哪裏可以瞭解更多關於NULLS的信息。我之前被咬過。 – JVMX

+0

任何SQL教程都應該討論它們。 – Barmar

+0

您正在爲這樣的問題編寫非常高級的SQL。我想最好的辦法是在黃色的粘貼上寫上「檢查NULL值」的東西,把它放在電腦屏幕上,當你遇到問題時,請按照建議進行操作。我(和大多數人)通常從他們的錯誤中學習。這只是需要時間。 –