2013-10-12 33 views
0

Table : tbl_email_scheduler
這裏date_to_send = '2013-10-12' AND send_status = NULL。 (在時間createing表我已經給SEND_STATUS默認NULL)查詢給出空的結果,因爲where子句

MySQL的:

SELECT 
    id, 
    to_users, 
    subject, 
    message, 
    product_id, 
    date_to_send, 
    send_status, 
    status, 
    createdate 
FROM tbl_email_scheduler 
WHERE date_to_send = '2013-10-12' 

給我造成

但是,當我

SELECT 
    id, 
    to_users, 
    subject, 
    message, 
    product_id, 
    date_to_send, 
    send_status, 
    status, 
    createdate 
FROM tbl_email_scheduler 
WHERE date_to_send = '2013-10-12' 
    and send_status != 'Y' 

它給我空的結果,爲什麼? 請回答。

回答

2

因爲數據庫服務器將NULL如無物,試試這個

SELECT 
    id, 
    to_users, 
    subject, 
    message, 
    product_id, 
    date_to_send, 
    send_status, 
    status, 
    createdate 
FROM tbl_email_scheduler 
WHERE date_to_send = '2013-10-12' and (send_status !='Y' OR send_status IS NULL) 
0

,我認爲你的錯誤是不能在MySQL中等於「<>」

試試這個

SELECT id, to_users, subject, message, product_id, date_to_send, send_status, STATUS , createdate FROM tbl_email_scheduler WHERE date_to_send = '2013-10-12' AND send_status <> 'Y' LIMIT 0 , 30 
0

任何比較NULL產量NULL。你應該根據自己的需要使用下面的運營商在處理NULL

x IS NULL - 確定左手錶達式是否是NULL,

x IS NOT NULL - 像上面,但是相反,

x <=> y - 以安全的方式將兩個操作數是否相等進行比較,即NULL被看作是一個正常值。

0

在你的第二個查詢您所定義如果SEND_STATUS不是Y.
這意味着,如果SEND_STATUS如果NULL,將沒有取。

你應該嘗試一下這樣的

SELECT 
    id, 
    to_users, 
    subject, 
    message, 
    product_id, 
    date_to_send, 
    send_status, 
    status, 
    createdate 
FROM tbl_email_scheduler 
WHERE date_to_send = '2013-10-12' 
    and (send_status != 'Y' AND send_status IS NOT NULL) 

這將首先獲取所有非空的結果,並申請不等於ÿ條件