sql - SQL 查询中有两个 COUNT() 列,一个用于 IN/INNER JOIN,一个用于 NOT IN/LEFT JOIN
问题描述
是否可以创建一个查询,其中您可以有两个COUNT()列,其中一列用于IN()之类的内容,另一列用于NOT IN()之类的内容,并且也仅使用JOIN?
例如,我有一个表tbl_a和tbl_b。在单个查询中,我希望两个表中都存在 1 个COUNT()列。另一个COUNT()列用于不存在于tbl_b但存在于tbl_a中的行。
sample in **tbl_a**:
|trans_id|amount |
|--| --- | --- |
|001 | 100.00 |
|002 |250.00|
|003 |300.00 |
sample in **tbl_b**:
|trans_id|ticket_no |
|--| --- | --- |
|001 |X0001|
|002 |X0002|
and my expected output:
|in_a_and_b|not_in_b|
|--| --- | --- |
|2|1|
解决方案
假设您有一个唯一匹配表中行的键,您可以使用:
select count(*) as in_a,
count(b.col) as in_a_and_b,
(count(*) - count(b.col)) as in_a_not_b
from tbl_a a left join
tbl_b b
on a.col = b.col
推荐阅读
- javascript - 在Javascript中,如果函数是对象数据类型(派生),那么它如何用作对象构造函数?
- javascript - 播放视频时无缝更改视频分辨率
- python - 如何在基于类的视图 django 中限制未经身份验证的用户的帖子视图
- javascript - openJSCAD 包含文件
- javascript - 使用 jquery 导入另一个 html 文件后下拉列表不起作用?
- sql - 在 SQL Server 中仅获取月份和年份
- c# - 如何在char数组中查找值的索引?
- compiler-errors - 头文件冲突定义
- python - 将 Fortran DO WHILE 循环转换为 Python
- javascript - 无法正确找到多选下拉字段的选定选项