【问题标题】:SQL UNION but fill in NULL valueSQL UNION 但填写 NULL 值
【发布时间】:2023-02-11 01:13:01
【问题描述】:

所以,我有两个表,Table1 的一部分看起来像这样

EmployeeID FirstName LastName Gender Age
A100 Bob Odenkirk Male 30
A101 Jon Jones NULL 36

表 2 看起来很相似,但包含一个重复条目,其中包含一些不同数量的缺失/可用信息,即

EmployeeID FirstName LastName Gender Age
A101 Jon Jones Male NULL
A103 Angelina Jolie Female 40

我是 SQL 的新手,我最初尝试过

SELECT * FROM Table1 UNION SELECT * FROM Table2

但显然 A101 行具有不同的 NULL 值,因此它不会被视为重复项,我得到:

EmployeeID FirstName LastName Gender Age
A100 Bob Odenkirk Male 30
A101 Jon Jones NULL 36
A101 Jon Jones Male NULL
A103 Angelina Jolie Female 40

是否有一种通用方法(即如果表很大并且不确定 Table1 或 Table2 中可能缺少哪些值)以某种方式“填充”NULL 值并获得以下信息目标输出:

EmployeeID FirstName LastName Gender Age
A100 Bob Odenkirk Male 36
A101 Jon Jones Male 30
A103 Angelina Jolie Female 40

谢谢

【问题讨论】:

    标签: sql null union


    【解决方案1】:

    假设您永远不会有“竞争”值(即,两个表要么具有相同的值,要么其中一个具有 null),您可以 union all 这两个查询,然后按 EmployeeID 分组并使用 @ 987654324@获取当前值并忽略nulls:

    SELECT   EmployeeID, MAX(FirstName), MAX(LastName), MAX(Gender), MAX(Age)
    FROM     (SELECT EmployeeID, FirstName, LastName, Gender, Age
              FROM   Table1
              UNION ALL
              SELECT EmployeeID, FirstName, LastName, Gender, Age
              FROM   Table2) T
    GROUP BY EmployeeID
    

    【讨论】:

      猜你喜欢
      • 2017-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      • 1970-01-01
      • 2020-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多