首页 > 解决方案 > MSQL获取前100行不相交

问题描述

我在 MSQL 中有 2 个表

第一个称为tbl_file,它具有以下属性:

第二个称为tbl_sys_filecontent,它只有:

假设这两个表必须具有相同的行大小。( tbl_file的hash-idtbl_sys_filecontent中的id相同

但是,出了点问题,现在如果我们执行:

select count(*) from tbl_sys_filecontent;

我们得到大约 1 000 000 行

我们应该在执行查询后得到相同的行数:

select count(*) from tbl_file as f
JOIN tbl_sys_filecontent as sf on f.hash_id = sf.id;

但是我们只返回了大约 100 000 个结果

我们称第一个查询集合A和第二个B

问题是我如何获得等于AB的前 100 行(所以哈希不相等?)

提前致谢。

标签: sqlsql-serverjoinselect

解决方案


存在

select *
from tbl_file as f
where not exists (select 'x' from tbl_sys_filecontent  as sf where f.hash_id = sf.id);

没有

select *
from tbl_file as f
where f.hash_id not in (select 'x' from tbl_sys_filecontent  as sf);

但是,不存在优于存在:https ://stackoverflow.com/a/11074428/59119

连接

select f.* from tbl_file as f
    LEFT JOIN tbl_sys_filecontent as sf on f.hash_id = sf.id
where sf.id is null;

推荐阅读