【问题标题】:Join Table, Do not show values when there is matches between two tables连接表,两个表匹配时不显示值
【发布时间】:2014-08-12 22:58:23
【问题描述】:

我有一个过程,我必须加入两个表: 第一个表(通用生成):FirstName、LastName、IssueStateCode 这是一个包含有关用户的所有信息的通用表。 第二个表(信息 inf):ID、IssueState、生效日期。 此表由管理员修改。当 inf.IssueState 列中有任何值(状态码)并且它与 gen.IssueStateCode 匹配时,我不会在存储过程中显示这些结果。这是打印问题。当有匹配项时,我不想打印结果,因为此状态已暂停打印。

例如: First Table (General gen): FirstName, LastName, IssueStateCode: Thomas, Parkey, CO;伊丽莎白,两者,洛杉矶

第二个表(信息 inf):ID,IssueState,生效日期:1,CO,205-01-01

在这种情况下,我的存储过程应该显示有关 Elizabeth 的所有信息。但不是关于 Thomas,因为他的 StateCode 在第二个表中。

我创建了存储过程并加入了这些表(我必须根据 IssueStateCode 加入它们):

 left join dbo.Information inf on gen.IssueStateCode = inf.IssueState

在 WHERE 子句中,我尝试使用以下语句: WHERE gen.IssueStateCode inf.IssueState

这个说法不成立。它显示零值。

【问题讨论】:

    标签: sql stored-procedures join where-clause


    【解决方案1】:

    您想要的where 子句是:

    WHERE inf.IssueState IS NULL
    

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

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 2020-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多