INNER JOIN在一个表上但不同的参数

时间:2017-10-02 00:01:43

标签: mysql

我试图在一个表的行上获得不同的值,我无法想到如何做到这一点。

让我们举例说:

table1
id  |  name  |  empCode | insCode 
 1    John   |   E101   |   I101


table2
id  |  code    | name | role
 1  |   E101   | Mich |   2
 2  |   I101   | Bran |   3

table1具有table2的reference id,而table1中的empCodeinsCode依赖于table2中的coderole

我想要的是这样的:

id | code  |  name  | empCode | insCode | role | 
 1 |  ?    |  John  |  E101   |  I101   |  ?   |

老实说,我不知道是否可以在一个select查询中检索同一个表中的多个行。 如果不是,我可以采用哪些其他可能的解决方案?

2 个答案:

答案 0 :(得分:1)

尝试以下方法: 选择a。*,b.role FROM table1 a.id = b.id

上的内连接table2 b

此外,您可能需要考虑从表2中删除empcode和inscode,因为它在表1中是多余的,反之亦然,具体取决于您的目标。

答案 1 :(得分:1)

您的表格设计存在问题,但您可以通过以下查询获得预期效果:

select 
result1.id, 
result1.code,
result1.name, 
result1.empCode, 
result1.insCode, 
result1.role as role_of_empCode,
result2.role as role_of_insCode
from (
  SELECT tbl1.id, 
  tbl2.code,
  tbl1.name, 
  tbl1.empCode, 
  tbl1.insCode, 
  tbl2.role
  FROM `table2` tbl2
  INNER JOIN `table1` tbl1 
  on tbl2.code = tbl1.empCode
) as result1, 
`table2` result2
where result1.insCode = result2.code
ORDER BY result1.id;

You can check in this link