我不太了解“ join”的某些部分是如何工作的。
我有2个表需要在某些列上联接。
让我们说以下关系:
TabA ( IDA, IDB, Label, isActive)
TabB (IDB, INFORMATION)
我们在IDB
上加入他们。但是,如果我们想加入isActive = 1
会怎样?
会发生什么?
Select *
from TabA
left join TabB
on TabA.IDB = TabB.IDB
and isActive = 1
我得到某种笛卡尔积,但是我不明白为什么也不是什么逻辑?
答案 0 :(得分:0)
您可以联接两个表,它们具有相同的字段,例如这里您有IDB但isactive不属于两个表
您可以在where子句中使用isactive:
Select TabA.* from TabA
left join TabB
on TabA.IDB = TabB.IDB
where TabA.isactive = 1
答案 1 :(得分:0)
此查询是外部联接:
Select *
from TabA a left join
TabB b
on a.IDB = b.IDB and b.isactive = 1;
这遵循任何left join
的相同规则。 TabA
中的所有行都在结果集中。此外,还包括来自TabB
的所有匹配项。在这种情况下,仅包含TabB
中isactive = 1
的行。如果没有行,则所有匹配的列均为NULL。
例如,如果您的tabA
为:
IDA IDB
1 1
2 1
3 2
tabB
为:
IDB isactive
1 0
2 1
那么结果集是:
IDA IDB IDB isActive
1 1 NULL NULL
2 1 NULL NULL
3 2 2 1