我有一个程序,我必须加入两个表: 第一个表(General gen):FirstName,LastName,IssueStateCode 这是一个包含有关用户的所有信息的通用表。 第二表(信息inf):ID,IssueState,生效日期。 此表由管理员修改。当inf.IssueState列中有任何值(statecode)并且它与gen.IssueStateCode匹配时,我不会在存储过程中显示这些结果。这是用于打印问题。当有匹配项时,我不想打印结果,因为此状态暂停打印。
例如: First Table(General gen):FirstName,LastName,IssueStateCode:Thomas,Parkey,CO;伊丽莎白,两个,洛杉矶
第二表(信息inf):ID,IssueState,生效日期:1,CO,205-01-01
在这种情况下,我的存储过程应显示有关Elizabeth的所有信息。但不是关于托马斯,因为他的StateCode在第二个表中。
我创建了存储过程并加入了这些表(我必须基于IssueStateCode加入它们):
left join dbo.Information inf on gen.IssueStateCode = inf.IssueState
我在WHERE子句中尝试使用以下语句: 在哪里gen.IssueStateCode<> inf.IssueState
这句话不起作用。它显示零值。
答案 0 :(得分:2)
您想要的where
子句是:
WHERE inf.IssueState IS NULL
你的版本很聪明,虽然这是错误的。如果没有匹配项,inf.IssueState
为NULL。当<>
中的一个或两个参数为NULL
时,NULL
运算符返回NULL
。并且,{{1}}被视为false,因此所有行都被过滤掉了。