sql从table1获取列表并将其与另一个表

时间:2016-12-21 09:10:12

标签: mysql sql

我有以下两个表:

表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

1 个答案:

答案 0 :(得分:4)

如果您想根据名称加入,为什么要将id放在连接的on-clause中?

。您需要左连接或表1中的所有行,表2中没有相应的名称。

int