获取具有相同类型连接的列名称与其类别也相同的其他表列名称

时间:2016-10-04 05:16:32

标签: sql join mapping

我想知道具有相同类型连接的get列名的查询与其类别也相同的其他表列名称。我试过但找不到答案。

这是我的查询

SELECT a.name, ac.name FROM table1 a 
JOIN table2 ac ON a.id = ac.areaId where ac.positionName = 'cm' or a.type = 2;

详细信息:

    Table1
------------------------
|id  |  name   |type   |
-------------------------
|1   |  a      | 1     |
|2   |  b      | 1     |
|3   |  c      | 2     |
|4   |  d      | 2     |
------------------------

table2 

----------------------------------
| name  |  positionName | areaId |
----------------------------------
|x      | cm            | 2      |
|y      | pm            | 3      |
|z      | cm            | 4      |
|q      | cm            | 1      |
----------------------------------

Result 

------------------------
| name  |  name        |
------------------------
| c     |              |
| d     |  z           |
------------------------

2 个答案:

答案 0 :(得分:0)

请尝试。

SELECT a.name, ac.name from (select * FROM table1 where type = 2 ) a 
left JOIN (select * from table2 where positionName = 'cm' ) ac ON a.id = ac.areaId 

答案 1 :(得分:0)

使用CASE声明。

 SELECT a.name, CASE WHEN ac.PositionName='cm' THEN ac.name ELSE '' END Name
 FROM table1 a 
    JOIN table2 ac ON a.id = ac.areaId 
 WHERE a.[type] = 2;