将NULL值与NULL结合起来

时间:2020-01-02 23:27:01

标签: mysql sql

表A

+----+-------+--------------+-------+----------+
| Id | EName | Company Code | State |   City   |
+----+-------+--------------+-------+----------+
|  1 | Tom   |     110      |  NC   | Ashville |
|  2 | Dick  |              |       |          |
|  3 | Harry |              |       |          |
|  4 | Tonny |     667      |  MN   | St.pauls |
+----+-------+--------------+-------+----------+

表B

+----+-------+--------------+-------+----------+
| Id | EName | Company Code | State |   City   |
+----+-------+--------------+-------+----------+
|  1 | Tom   |    110       |  NC   | Ashville |
|  2 | Dick  |    111       |  MN   | Minesota |     
|  3 | Harry |    112       |  CA   | Oregon   |
+----+-------+--------------+-------+----------+

O / p

+----+-------+--------------+-------+----------+
| Id | EName | Company Code | State |   City   |
+----+-------+--------------+-------+----------+
|  1 | Tom   |    110       |  NC   | Ashville |
|  2 | Dick  |    111       |  MN   | Minesota |     
|  3 | Harry |    112       |  CA   | Oregon   |
|  4 | Tonny |    667       |  MN   | St.pauls |
+----+-------+--------------+-------+----------+

查询:

SELECT Ename,   
       COALESCE(A.ID, B.ID) AS ID
FROM   `Table A` AS A,
       `Table B` AS B 
WHERE  A.`id_column_1`=B.`id_column_1` 
UNION ALL      
SELECT `Ename,`ID`  
FROM   `Table B` 
WHERE  `Id` IS NOT NULL

因为我只想为表A中不存在的记录从表B中选择ID。请告诉我查询中出了什么问题。谢谢。

1 个答案:

答案 0 :(得分:4)

我认为您想从a中提取b中缺少的信息。如果是这样:

select a.id,
       coalesce(a.name, b.name) as name,
       coalesce(a.company, b.company) as company,
       coalesce(a.state, b.state) as state,
       coalesce(a.city, b.city) as city
from a left join
     b
     on a.id = b.id;