2012-11-25 46 views
2
SELECT * 
FROM REVIEW 
WHERE REVIEWERID =5 AND APPRAISEECONFIRMYN='Y' AND HRCONFIRMYN = NULL 

我们可以给出2'AND'条件吗?我没有得到正确的输出。在满足上述条件的数据库中有2条记录,但是当执行查询时不会显示它。当我删除最后一个条件'HRCONFIRMYN = NULL'并执行时,我得到正确的输出。SQL'select'具有3个条件的查询

如何解决?我需要检查所有3个条件searchng记录

+0

也许HRCONFIRMYN确实不是null? “HRCONFIRMYN是否为空”工作?根据DBMS和设置“= NULL”可能不起作用(并且不符合ANSI) –

+0

好的,乔纳森。 Ya Jim,'HRCONFIRMYN IS NULL'起作用。 –

回答

6

要比较NULL的值,您必须使用IS NULL谓词而不是= NULL像这样:

SELECT * 
FROM REVIEW 
WHERE REVIEWERID = 5 
    AND APPRAISEECONFIRMYN = 'Y' 
    AND HRCONFIRMYN IS NULL 
+0

这为我节省了很多时间,祝你好运! – SaidbakR

+0

非常感谢Mahmoud Gamal。 IT WORKED .. –

+0

@sanuj - 不客气。尝试[**接受答案**](http://meta.stackexchange.com/questions/16721/how-does-accept-rate-work),如果您发现它有帮助,或其他答案在这里介绍。通过检查左侧的标记。这是在这里如何工作的。谢谢。 –

1
  • 使用OR代替
  • 组你的病情
  • 使用IS NULL与空值

查询比较时,

SELECT * 
FROM REVIEW 
WHERE (REVIEWERID =5 AND APPRAISEECONFIRMYN='Y') OR 
     HRCONFIRMYN IS NULL 
+0

谢谢库亚,'或'应该用'和'取代? –

+1

@sanuj:请不要SHOUT。是的,出于您的目的,OR应该用AND代替,括号则不必要。 –

+0

对不起,我没有留言。可能你错误​​,因为我的大写字母是正确的,噢,上帝,我想告诉你,这并不意味着你想到的任何东西..我使用大写字母键入sql managmnt工作室,所以在此期间我在这里输入了评论,我忘了关闭大写锁定。 –