【问题标题】:Exclude null value during full outer join在完全外连接期间排除空值
【发布时间】:2016-02-02 10:33:00
【问题描述】:

如何在排除所有空值的情况下连接这两个表?

我想要第一个表信息中的用户名,而不是第二个表中的 UserId。

【问题讨论】:

  • 一些文本格式的示例表数据会很好,而且预期的结果也是......
  • 如果要排除所有空值,为什么要使用全外连接?
  • 没有看到任何实际查询我只能说:将WHERE LogoutTime IS NOT NULL 添加到您的SQL 语句中。
  • 1.我认为您不需要完整的外部联接; 2. 在不希望出现空值的地方提及列名; 3.举个例子——预期的结果; 4. 告诉我们您尝试了什么。标记问题。

标签: sql sql-server database null full-outer-join


【解决方案1】:

您可以使用INNER JOIN实现期望的结果

SELECT UserProfile.*
FROM UserProfile
INNER JOIN UserLoginHistory ON UserProfile.UserId = UserLoginHistory.UserId AND UserLoginHistory.LogoutTime IS NOT NULL

【讨论】:

    【解决方案2】:

    这是两个选项(您没有指定哪些列来自哪个表)

    A)您只想获取没有空值的行,在这种情况下:

    SELECT *  --(columns that you want)
    FROM UserProfile t 
    FULL OUTER JOIN UserLoginHistory s
    ON t.UserId = s.UserId
    AND s.LogoutTime IS NOT NULL
    

    或者如果只有注销时间来自第二个表,你需要一个内连接而不是全连接,在这种情况下:

    SELECT *  --(columns that you want)
    FROM UserProfile t
    INNER JOIN UserLoginHistory s
    ON t.UserId = s.UserId
    AND s.LogoutTime IS NOT NULL
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-01
      • 1970-01-01
      • 2020-08-22
      • 2015-12-11
      • 2012-01-06
      • 2013-03-11
      • 2018-03-27
      相关资源
      最近更新 更多