use*_*143 0 sql sql-server sql-server-2008
我知道如何找到缺少但两个查询的表之间的公共值?
查询1:
SELECT DISTINCT GENG.GlGroup
FROM MCMGenHistory GENH
RIGHT OUTER JOIN RPZCGenGroup GENG
ON GENG.ExpenseCode = substring(GENH.GlCode,13,3)
WHERE SUBSTRING(GENH.GlCode,1,1)='P'
Run Code Online (Sandbox Code Playgroud)
结果:
10
7
8
5
1
6
9
4
Run Code Online (Sandbox Code Playgroud)
查询2:
SELECT DISTINCT GENG.GlGroup
from RPZCGenGroup GENG
Run Code Online (Sandbox Code Playgroud)
结果:
1
10
2
3
4
5
6
7
8
9
Run Code Online (Sandbox Code Playgroud)
我想要丢失的记录,例如2和3.问题是第一个查询使用相同的表但使用过滤器.
当您在条件之外添加标准时,JOIN您可以有效地将其OUTER JOIN转换为INNER JOIN.如果我理解正确你想要加入条件的GENG.GlGroup值不适用,那么为什么不在OUTER JOIN逻辑中保留所有的剔除标准并从RPZCGenGroup获取GENH.GlGroup为空的记录?
SELECT DISTINCT GENG.GlGroup
FROM MCMGenHistory GENH
RIGHT OUTER JOIN RPZCGenGroup GENG
ON GENG.ExpenseCode=substring(GENH.GlCode,13,3)
AND SUBSTRING(GENH.GlCode,1,1)='P'
WHERE GENH.GlCode Is Null
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |