我有个问题。我有两个具有相同列的表。我想创建第三个表,其中包含这两个表中的 id 行,其中四个选择的列相同。
我解决了将数据 null 与 isnull 进行比较的问题。
我写了这样的东西:
WITH cteCandidates (City, Street, HouseNumber, PostCode)
AS
(
SELECT City, Street, HouseNumber, PostCode
FROM Gymnasium
INTERSECT
SELECT City, Street, HouseNumber, PostCode
FROM PrimarySchool
)
select e.Id as 'Gymnasium',
p.Id as 'PrimarySchool'
FROM
Gymnasium AS e
Inner join cteCandidates AS c
on isnull(e.City ,'999999') = isnull(c.City ,'999999')
AND isnull(e.Street ,'999999') = isnull(c.Street ,'999999')
AND isnull(e.HouseNumber,'999999') = isnull(c.HouseNumber,'999999')
AND isnull(e.PostCode ,'999999') = isnull(c.PostCode ,'999999')
inner join PrimarySchool as p
on isnull(e.City ,'999999') = isnull(p.City ,'999999')
AND isnull(e.Street ,'999999') = isnull(p.Street ,'999999')
AND isnull(e.HouseNumber,'999999') = isnull(p.HouseNumber,'999999')
AND isnull(e.PostCode ,'999999') = isnull(p.PostCode ,'999999')
order by PrimarySchool
一切正常,除了代码:
SELECT City, Street, HouseNumber, PostCode
FROM Gymnasium
INTERSECT
SELECT City, Street, HouseNumber, PostCode
FROM PrimarySchool
返回与第一个代码不同的行数。
我究竟做错了什么?