2012-01-30 25 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