在编写视图和在更深的视图中嵌套视图时,我有时会遗漏一些东西,最终导致行/数据丢失。如何检查来自两个不同表的列是否与数据完全匹配?
示例:
select count(distinct table1.col1)
from table1
where table1.col1 not in (select distinct table2.col1
from table2);这将返回table1.col1中不在table2中的值的数量。但是,我不知道这是不是一个好的解决方案,因为它没有计算table1.col1中不存在的table2.col1值。
发布于 2010-04-09 03:31:58
使用:
SELECT MAX(x.t1_missing_count) AS t1_missing_count,
MAX(x.t2_missing_count) AS t2_missing_count
FROM (
SELECT COUNT(DISTINCT t1.col1) AS t1_missing_count,
NULL AS t2_missing_count
FROM TABLE_1 t1
WHERE t1.col1 NOT IN (SELECT DISTINCT t2.col1
FROM TABLE_2 t2)
UNION ALL
SELECT NULL,
COUNT(DISTINCT t2.col1),
FROM TABLE_2 t2
WHERE t2.col1 NOT IN (SELECT DISTINCT t1.col1
FROM TABLE_1 t1)) x发布于 2010-04-09 03:35:28
您可以使用两个EXCEPT查询(或联合它们)来检查:
SELECT DISTINCT col1
FROM table1
EXCEPT
SELECT DISTINCT col1
FROM table2这将显示存在于table1中但不存在于table2中的值。然后再次运行,并将表名翻转到相反位置。
发布于 2010-04-09 03:33:50
select count(*) from (
select
table1.col1 from table1 left join table2 on table1.col1 = table2.col2
where table2.col1 is null
union
select table2.col1 from table2 left join table 1 on table2.col1 = table1.col1
where table1.col1 is null
)https://stackoverflow.com/questions/2602774
复制相似问题