当我增加字段的复杂性时,为什么我会减少返回的行数?
我需要使用相同的模式合并2个表。
问题是相同记录的PK不一样
例如,我正在尝试合并这两个表:
+--------------------------------------+--------+----------+
| columna |columnb | columnc |
+--------------------------------------+--------+----------+
| EE75442D-C41F-4AE4-A0B5-8459E3CBDEAC | donkey | 3 |
| 7E27434F-BC62-489B-97F4-7685BDA663D7 | horse | 5 |
| 2344CB35-D4BB-4BFA-8869-797A8BE7C235 | cat | 3 |
| DDB81938-D6A1-4435-96F2-C901785C5216 | cat | 4 |
+--------------------------------------+--------+----------+
这一个:
+--------------------------------------+--------+----------+
| columna |columnb | columnc |
+--------------------------------------+--------+----------+
| BF01AD4B-0FBF-4653-9E02-20C640451AF8 | donkey | 3 |
| 7A8ED2BD-F844-49A9-B8EC-37B360030580 | horse | 5 |
| 1CDB2B1A-AB8F-44D6-A933-B12A6FE87D71 | cat | 3 |
| D8D98F48-9BDF-4009-96AF-76DEC49E0856 | cat | 4 |
+--------------------------------------+--------+----------+
我在两个表中都有一个很好的主键: columna
不幸的是,它没用,因为我没有为同一记录保留相同的PK。
我试图找到一个可以连接并创建一个独特字段的字段组合。例如,这将返回303139条记录:
;with cte_unique as (
select (cast (parentcustomerid as NVARCHAR(36)) + vth_contactnumber) as uniqueColumn from contact)
select COUNT(distinct uniquecolumn) from cte_unique
然而,当我通过将另一个字段连接到 uniquecolumn 来增加字段的复杂性时:
;with cte_unique as (
select (cast (parentcustomerid as NVARCHAR(36)) + vth_contactnumber+mobilephone) as uniqueColumn from contact)
select COUNT(distinct uniquecolumn) from cte_unique
* 我的行数实际上更少* 160981
答案 0 :(得分:3)
不要连接。连接NULL
会导致NULL
。尝试
WITH CTE
AS (SELECT DISTINCT parentcustomerid,
vth_contactnumber,
mobilephone
FROM contact)
SELECT COUNT(*)
FROM CTE
如果该组合是唯一的,您可以使用
上的连接SELECT *
FROM contact c
JOIN other_table t
ON EXISTS(SELECT t.parentcustomerid,
t.vth_contactnumber,
t.mobilephone
INTERSECT
SELECT c.parentcustomerid,
c.vth_contactnumber,
c.mobilephone)