我有以下两个表:
表1
id name
---------
A3 B2
A3 B400
A5 B100
A7 B200
A8 B6
A8 B2
A8 B3
和表2
id name company
-------------------
A1 company1
A2 company2
A3 B1 company3
A4 company4
A5 B2 company5
A6 company6
A7 B3 company7
A8 B4 company8
A9 company9
A10 B6 company10
,结果如下:
mysource target Freq
-------------------
A3 A5 1
A3 B400 1
A5 B100 1
A7 B200 1
A8 A10 1
A8 A5 1
A8 A7 1
这里是demo ,但它没有返回我正在寻找的结果。
一些解释: 从table1获取所有id的列表,(包括重复的那些)作为新表中的MYSOURCE,对于TARGET列,从table1的name列获取值作为列TARGET的值,但首先检查是否存在于table2的name列中,如果存在,则从table2获取相应的id,如果它不存在,则将table1中的该name值放入目标列中。 这是我的尝试:
select t1.id as mysource,
CASE
WHEN t1.name = t2.name THEN t2.id
ELSE t1.name
END AS target,
'1' as size
from Table1 t1
join Table2 t2
on t1.id = t2.id
group by mysource
答案 0 :(得分:4)
如果您想根据名称加入,为什么要将id放在连接的on-clause中?
。您需要左连接或表1中的所有行,表2中没有相应的名称。int