在 SQL 服务器中加入 tables 并报告主 table 中丢失的数据
Join tables in SQL Server and report missing data from primary table
我有 4 个 table,我想将主 table 中不存在的所有数据分组。
例如我有以下 4 tables:
Table_A – 3000 行:
Table_B – 200 行:
Table_C – 150 行:
Table_D – 800 行:
我想查看 Table_A 中不存在的所有用户并将它们合并为一个 table(示例如下所示):
我有这个查询,但是我没有得到上面想要的结果。你能告诉我哪里错了吗?
SELECT *
FROM Table_A A
RIGHT OUTER JOIN Table_B B ON A.Phone_Number = B.Phone_Number
RIGHT OUTER JOIN Table_C C ON A.Phone_Number = C.Phone_Number
RIGHT OUTER JOIN Table_C D ON A.Phone_Number = D.Phone_Number
WHERE A.ID IS NULL
你可以这样做。我可以看到如果水平显示数据,您将如何获得更多知识,并且以后很难使用:
Select * from
(
select [Employee Name], Phone_Number From table_B
union
select [Employee Name], Phone_Number From table_C
union
select [Employee Name], Phone_Number From table_D
)
T
where not exists
(select 1 from Table_A a where a.Phone_Number = T.Phone_Number )
如果我没理解错的话,你想匹配 phone 个数字。如果是:
select phone_number, max(b_name), max(c_name), max(d_name)
from ((select b.phone_number, b.employee_name as b_name, null as c_name, null as d_name
from b
) union all
(select c.phone_number, null, c.employee_name as b_name, null as d_name
from c
) union all
(select b.phone_number, null, null, b.employee_name as b_name
from d
)
) bcd
where not exists (select 1 from a where a.phone_number = bcd.phone_number)
group by phone_number;
我有 4 个 table,我想将主 table 中不存在的所有数据分组。
例如我有以下 4 tables:
Table_A – 3000 行:
Table_B – 200 行:
Table_C – 150 行:
Table_D – 800 行:
我想查看 Table_A 中不存在的所有用户并将它们合并为一个 table(示例如下所示):
我有这个查询,但是我没有得到上面想要的结果。你能告诉我哪里错了吗?
SELECT *
FROM Table_A A
RIGHT OUTER JOIN Table_B B ON A.Phone_Number = B.Phone_Number
RIGHT OUTER JOIN Table_C C ON A.Phone_Number = C.Phone_Number
RIGHT OUTER JOIN Table_C D ON A.Phone_Number = D.Phone_Number
WHERE A.ID IS NULL
你可以这样做。我可以看到如果水平显示数据,您将如何获得更多知识,并且以后很难使用:
Select * from
(
select [Employee Name], Phone_Number From table_B
union
select [Employee Name], Phone_Number From table_C
union
select [Employee Name], Phone_Number From table_D
)
T
where not exists
(select 1 from Table_A a where a.Phone_Number = T.Phone_Number )
如果我没理解错的话,你想匹配 phone 个数字。如果是:
select phone_number, max(b_name), max(c_name), max(d_name)
from ((select b.phone_number, b.employee_name as b_name, null as c_name, null as d_name
from b
) union all
(select c.phone_number, null, c.employee_name as b_name, null as d_name
from c
) union all
(select b.phone_number, null, null, b.employee_name as b_name
from d
)
) bcd
where not exists (select 1 from a where a.phone_number = bcd.phone_number)
group by phone_number;