考虑以下表格:
表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出现一次。可以这样做吗?
答案 0 :(得分:3)
我仍然对这个原因感到困惑,但是通过你的修改很容易实现。通过左边连接相同的表来抓取任何(在这种情况下是最低的)Misc列,你可以获得TableA中每个Cateogory中只有一个出现的记录。然后,您只能将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