从其他 sql 表中查找值

Posted

技术标签:

【中文标题】从其他 sql 表中查找值【英文标题】:Lookup value from other sql table 【发布时间】:2015-03-31 11:13:11 【问题描述】:

我有如下sql语句:

select A.transactionNumber,
A.DealNumber      
A.Group
from TableOne A

inner join TableTwo B     
on A.transactionNumber = B.tranNumber     
where B.ID = 111111  

这会产生类似的东西

transactionnumber  |   DealNumber  |  Group
123                |   1           |   100
456                |   2           |   101

但是,还有另一个表 tableThree 将“组”转换为字符串。它看起来像这样:

Group | GroupLookup
100   | Lookup1
101   | Lookup2
102   | Lookup3

总之,我希望我的选择返回这个:

transactionnumber  |   DealNumber  |  Group
123                |   1           |   Lookup1
456                |   2           |   Lookup2

我完全确定这很简单,但是我是一个完整的新手,并且选择中的第一个加入的存在让我很困惑,我非常感谢任何帮助。

【问题讨论】:

【参考方案1】:

如果我理解正确的话应该是这样的:

select A.transactionNumber,
A.DealNumber,     
C.GroupLookup AS [Group]
from TableOne A    
inner join TableTwo B     
on A.transactionNumber = B.tranNumber     
inner join TableThree C
on C.Group = A.Group
where B.ID = 111111  

【讨论】:

感谢您的回答。您添加了第二个内部联接,但 tableTwo (B) 中没有 Group 字段。组在 tableThree 中,如果我将行 c.Group = B.Group 更改为 C.Group = A.Group 则返回的行数比我尝试查找组之前的查询多得多。 所以你需要加入TableThreeGroupTableOneGroup。当您选择A.Group 并返回组号时,TableThree 中的列Group 也包含相同的组号,因此您需要加入它们,TableThree 中包含组名称的其他列是GroupLookup所以你需要使用它选择子句。现在检查答案。 非常感谢 - 行数增加是由于表的内容,与查询无关。再次感谢 - 真的很有帮助

以上是关于从其他 sql 表中查找值的主要内容,如果未能解决你的问题,请参考以下文章

从 DB 表中查找非连续的原始值 - SQL

如何在 Oracle 的表中查找重复值?

使用一个表中的整数值在另一个 SQL 表中查找值

编写 SQL 语句通过 join id 查找行,并将连接行中的值插入到父表中

在 SQL 表中查找重复值

sql查询 如何获取查找某ID的一条记录在表中是第几条记录