首页 > 解决方案 > SQL JOIN 以比较表“A”中的两个值/行和表“B”中的同一行

问题描述

我有两个包含以下行的表

表 A(事务)

 Order       Seller      Customer    
 1           300         500

表 B(人)

PersonID          FullName        
300               Peter White
500               Scott Bold

我想要这样的结果

Order      Seller        Customer     FullName (Seller)      FullName  (customer)     
1          300           500          Peter White            Scott Bold

我尝试了多种方法,但是更有意义的是两次加入表,但是我得到了:

不明确的列名

这是 SQL Server 2019。

基本上我希望从同一个表中检索信息,而不是创建其他表。那可能吗?如果是,你会怎么做?先感谢您。

标签: sqlsql-serverleft-join

解决方案


正如@jarlh 在评论中所写:

select t.order, t.seller, t.customer, sel.fullname, cust.fullname
from transaction t
join persons sel -- sel is an alias to persons table
  on sel.personid = t.seller
join persons cust
  on cust.personid = t.customer;

join只要卖家和客户都存在于表中,查询就会返回结果persons——这里它应该作为源表名transactions:)。


推荐阅读