首页 > 解决方案 > 在硬编码值上加入 2 个表

问题描述

我不太明白“加入”的某些部分是如何工作的。

我有 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

我得到某种笛卡尔积,但我不明白为什么也不明白什么逻辑?

标签: sqlsql-servertsqljoin

解决方案


你可以加入两个表,它们有一个共同的字段,比如这里你有 IDB,但 isactive 不属于这两个表

您可以在 where 子句中使用 isactive :

Select TabA.* from TabA
left join TabB 
on TabA.IDB = TabB.IDB 
where TabA.isactive = 1

推荐阅读