连接表,当两个表之间存在匹配时,不显示值

时间:2014-08-12 14:56:27

标签: sql stored-procedures join where-clause

我有一个程序,我必须加入两个表: 第一个表(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

这句话不起作用。它显示零值。

1 个答案:

答案 0 :(得分:2)

您想要的where子句是:

WHERE inf.IssueState IS NULL

你的版本很聪明,虽然这是错误的。如果没有匹配项,inf.IssueState为NULL。当<>中的一个或两个参数为NULL时,NULL运算符返回NULL。并且,{{1}}被视为false,因此所有行都被过滤掉了。