在同一表中查询具有两个ID的内部联接

时间:2018-08-31 16:52:50

标签: mysql sql

我要在同一个表中保存2个id,然后做一个内部获取名称,但是我只能得到一个名称。我怎么得到两个名字

表1

 ------------------------
|id|name       |xxx     | 
|--|-----------|--------|  
|1 |name1      |xxx1    | 
|2 |name2      |xxx2    | 
|3 |name3      |xxx3    |
|  |           |        | 
|--|-----------|--------|  

table2

 --------------------------------------
|id|table1User |CLIENT  |table1Worker | 
|--|-----------|--------|-------------|
|5 |1          |xxx1    |2            |  
|6 |1          |xxx2    |2            |
|7 |3          |xxx3    |3            |
|--|-----------|--------|-------------|  

这是我的查询

     SELECT a.id, p.name, p.CLIENT, p.table1Worker
        FROM table2 as a INNER JOIN table1 as p ON p.id = a.table1User

通过此查询,我得到此结果,但我想在table1Worker中显示名称

 --------------------------------------
|id|table1User |CLIENT  |table1Worker | 
|--|-----------|--------|-------------|
|5 |name1      |xxx1    |2            |  
|6 |name1      |xxx2    |2            |
|7 |name3      |xxx3    |3            |
|--|-----------|--------|-------------|  

我应该怎么做?

1 个答案:

答案 0 :(得分:2)

加入表两次。这是别名的用途之一;别名可以让您区分同一张表的两个实例:

SELECT t2.id, t1user.name "table1User", t2.CLIENT, t1worder.name "table1Worker"
FROM table2 t2 
INNER JOIN table1 t1user ON t1user.id = t2.table1User
INNER JOIN table1 t1worker ON t1worker.id = t2.table1Worker