从MySQL中的表中选择一列两次

时间:2012-01-26 11:21:14

标签: mysql join

我有表格,用于存储用户ID以及其来源和目的地的ID。在表格b 上,我有地点ID和地点的具体名称。我要做的是加入表格,但表格b 中的名称列必须使用两次,因为我正在尝试获取2个地址。我正在尝试阅读MySQL但只是继续做错了。任何帮助将不胜感激。

      table a
------------------------
|  uid |   to | from   |
------------------------
|   1  |   1  |   2    |
------------------------

    table b
---------------
| lid  | name | 
---------------
|   1  | one  |
---------------
|   2  | two  |
---------------

       /what I'm trying to achieve/
------------------------------------------
|a.uid | a.to | b.name | a.from | b.name |
------------------------------------------
|   1  |   1  |  one   |   2    | two    |
------------------------------------------

2 个答案:

答案 0 :(得分:1)

您必须连接表b两次,并且每次使用as

使用不同的表名(b1,b2)
select *
from a join b as b1 on a.to = b1.lid 
       join b as b2 on a.from = b2.lid 

所以结果将是

--------------------------------------------
|a.uid | a.to | b1.name | a.from | b2.name |
--------------------------------------------
|   1  |   1  |  one    |   2    | two     |
--------------------------------------------

但你可能想要的是防止名字冲突 - 如果你是从PHP调用它 - 然后重命名列:

select a.*, b1.name as toName, b2.name as fromName
... (rest of the query as above)

答案 1 :(得分:0)

如果仅限于两次加入表b两次。

但看起来你可以在a.from和a.to之间有任意数量的数字,在这种情况下,我会建议你在两个或多个查询中执行此操作。

一个从a和一个获取行来获取b中a.from和a.to之间的所有行。