0

考虑下表:

表 A

Category  Misc
--------  ----
a         fsd
a         wer
b         fgg
c         ghj 
c         yui
c         rty

表 B(将类别映射到数字)

Category  Num
--------  ---
a         1
b         2
c         3

期望的结果

Category  Num  Misc
--------  ---  ----
a         1    fsd
a              wer
b         2    fgg
c         3    ghj
c              yui
c              rty

一个简单的左外连接将尝试将 Num 映射到表 A 中的每个类别,但我只希望 Num 出现一次。这可以做到吗?

4

1 回答 1

3

我仍然对原因感到困惑,但是通过您的修改,这很容易实现。通过左连接同一个表并抓取任何(在这种情况下是最低的)杂项列,您可以获得 TableA 中每个类别仅出现一次的记录。然后,您可以仅在在该分组子查询中找到记录的那些行上保留 join TableB。

select
  a.Category,
  a.Misc,
  b.Num
from
  TableA a
  left join (
    select 
      Category, 
      min(Misc) as MinMisc 
    from 
      TableA
    group by
      Category) c on c.Category = a.Category and c.MinMisc = a.Misc
  left join TableB b on b.Category = a.Category and mc.Category is not null    
于 2013-07-30T20:03:51.413 回答