我试图比较两个表,以找到每个表中不在另一个表中的行.表1有一个groupby列,用于在表1中创建2组数据.
groupby number
----------- -----------
1 1
1 2
2 1
2 2
2 4
Run Code Online (Sandbox Code Playgroud)
表2只有一列.
number
-----------
1
3
4
Run Code Online (Sandbox Code Playgroud)
因此,表1在组2中具有值1,2,4,而表2具有值1,3,4.
加入第2组时,我希望得到以下结果:
`Table 1 LEFT OUTER Join Table 2`
T1_Groupby T1_Number T2_Number
----------- ----------- -----------
2 2 NULL
`Table 2 LEFT OUTER Join Table 1`
T1_Groupby T1_Number T2_Number
----------- ----------- -----------
NULL NULL 3
Run Code Online (Sandbox Code Playgroud)
我可以让它工作的唯一方法是,如果我为第一个连接放置一个where子句:
PRINT 'Table 1 LEFT OUTER Join Table 2, with WHERE clause'
select table1.groupby as [T1_Groupby],
table1.number as [T1_Number],
table2.number as [T2_Number]
from table1
LEFT …Run Code Online (Sandbox Code Playgroud) 这里有一个类似的问题,但我的疑问略有不同:
select *
from process a inner join subprocess b on a.id=b.id and a.field=true
and b.field=true
Run Code Online (Sandbox Code Playgroud)
那么,在使用 时inner join,哪个操作先出现:连接还是a.field=true条件?
由于这两个表非常大,我的目标是process首先过滤表,然后仅连接用 table 过滤的行subprocess。
哪种方法是最好的?