2012-01-30 62 views
0
SELECT id, company_id, user_id, valid_until, price 
FROM `classifieds` 
WHERE `user_id` = 1 
AND `valid_until` > now() 
AND `price` = -2 

此查詢給了我一個排,和它的作品確定...MYSQL:基本選擇與= statemenet

只要我添加了一個聲明

SELECT id, company_id, user_id, valid_until, price 
FROM `classifieds` 
WHERE `user_id` = 1 
AND `valid_until` > now() 
AND `price` = -2 
AND `company_id` != 23 

它給我什麼!

我在第一個查詢獲取行有COMPANY_ID NULL

id company_id user_id valid_until price 
35136 NULL 1 2012-02-12 08:06:37 -2 

請告知

編輯:有COMPANY_ID NULL

我不想行。我想,除了(COMPANY_ID)值23.

+0

http://en.wikipedia.org/wiki/Null_(SQL) #Data_Manipulation_Language – 2012-01-30 07:36:16

+0

@ todda.speot.is:你的觀點是什麼?你能幫我解答嗎? – 2012-01-30 07:40:53

+0

他的觀點是,你得到的是正確的答案。 NULL不等於任何東西,但它對任何東西都不是*不等於*。三值邏輯。如果你想測試'NULL',你總是必須使用'IS(NOT)NULL' – Naltharial 2012-01-30 08:17:27

回答

3
SELECT id, company_id, user_id, valid_until, price 
FROM `classifieds` 
WHERE `user_id` = 1 
AND `valid_until` > now() 
AND `price` = -2 
AND (`company_id` IS NULL OR `company_id` != 23) 

這似乎這樣的伎倆所有行(NULL和NOT NULL)

+0

是的,這是正確的。 – 2012-01-30 09:53:36