我在 access 2003 中创建了这个语句
SELECT COUNT(*)
FROM TABLEA
WHERE NOT EXISTS(SELECT * FROM TABLEB);
该语句是否有助于检查表 A 中的记录是否与表 b 相同?TABLEA 是表 b 的新表,我想确保表 b 中的所有记录都在表 A 中。
其次,我有这张桌子 TABLEC。如何检查 TABLEC 中是否有重复记录,这意味着所有字段值都相同?
我在 access 2003 中创建了这个语句
SELECT COUNT(*)
FROM TABLEA
WHERE NOT EXISTS(SELECT * FROM TABLEB);
该语句是否有助于检查表 A 中的记录是否与表 b 相同?TABLEA 是表 b 的新表,我想确保表 b 中的所有记录都在表 A 中。
其次,我有这张桌子 TABLEC。如何检查 TABLEC 中是否有重复记录,这意味着所有字段值都相同?
答案是:不,您的查询没有意义。
要判断两条记录是否“相同”,您必须定义术语“相等”。所有字段都应该相等吗?还是只有某些领域?
如果您有两个表TableA
,TableB
并且它们有两个字段“A”和“B”,则此语句会查找两个表中存在的所有记录:
select distinct TableA.*
from TableA
join TableB
on TableA.A = TableB.A
and TableA.B = TableB.B
或者
select *
from TableA
where exists (
select 1
From TableB
where TableA.A = TableB.A
and TableA.B = TableB.B
)
编辑:用户 10e5x 指出他的表包含 NULL 值。因此,每个字段的比较必须更复杂一些,以补偿 NULL 比较警告。
我将只给出WHERE
部分:
where TableA.A = TableB.A or coalesce (TableA.A, TableB.A) is NULL
and TableA.B = TableB.B or coalesce (TableA.B, TableB.B) is NULL
该函数coalesce(a,b,c...)
返回最左边的非 NULL 值,因此
coalesce (A,B) is NULL
-- is equal to
A is NULL and B is NULL
注意:这种棘手的编码是您应该避免在用于比较的列中使用 NULL 值的原因。
尝试这个
从表 A 中选择文档编号 INTERSECT 从表 B 中选择文档编号