sql - MSQL获取前100行不相交
问题描述
我在 MSQL 中有 2 个表
第一个称为tbl_file,它具有以下属性:
- ID
- hash_id
- 描述
- 哑剧型
- 创建日期
- ETC..
第二个称为tbl_sys_filecontent,它只有:
- ID
- 内容(base64)
假设这两个表必须具有相同的行大小。( tbl_file的hash-id与tbl_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 行(所以哈希不相等?)
提前致谢。
解决方案
不存在
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;
推荐阅读
- sql - Presto:将整数数组转换为字符串?
- python - y 轴具有递减值而不是 plt 递增值
- emacs - elisp 为关键字动态生成字符串
- prometheus - 将标签值作为行值和列名的类似表格的可视化
- symfony - Symfony 依赖注入到类
- image-processing - 如何在 ImageMagik 命令行中创建光迹 - 比较两个图像的最亮部分
- javascript - String.prototype.something() 实际上是如何工作的?
- angular - 如何替换 Angular 组件中的服务实现?
- wso2 - WSO2 IS 和联合 iDP
- airflow - 将这些任务组织成 DAG 的最佳方式