SQL Query将两列与另一个表中的一列进行比较(并获取两个值)

时间:2017-04-10 12:06:07

标签: php mysql sql-server join

根据table1中两列的ID值,是否可以在table2中获得它们的等价物?

我的table1看起来像这样:

id | origin | destiny
-- | ------ | -------
1  | 2      | 3
2  | 4      | 5

table2,就像这样:

id | name
-- | ----
1  | bla
2  | asd
3  | dfg
4  | qwe
5  | tle

我希望得到这样的东西:

id | origin | destiny | nameOrigin | nameDestiny
-- | ------ | ------- | ---------- | -----------
1  | 2      | 3       | asd        | dfg
2  | 4      | 5       | qwe        | tle

我试着做两个问题:

SELECT
    t1.origin, 
    t1.destiny,
    t2.name
FROM 
    table1 t1 
INNER JOIN table2 t2 ON t1.origin = t2.id

SELECT
    t1.origin, 
    t1.destiny,
    t2.name as destinyName
FROM 
    table1 t1 
INNER JOIN table2 t2 ON t1.destiny = t2.id

但是如果我从一个表中删除一个值,那么另一个表会继续索引该行,因此存在未定义的偏移问题。

2 个答案:

答案 0 :(得分:1)

您可以两次加入第二张表格:

SELECT      t1.id,
            t1.origin, 
            t1.destiny,
            o.name as nameOrigin,
            d.name as nameDestiny
FROM        table1 t1 
INNER JOIN  table2 o ON t1.origin = o.id
INNER JOIN  table2 d ON t1.destiny = d.id

注意:“命运”“目的地”不一样

答案 1 :(得分:0)

您可以通过简单的查询来完成:

SELECT t1.id,t1.origin,t1.destiny,o.name as nameOrigin, d.name as nameDestiny  
FROM t1,t2 o, t2 d 
WHERE t1.origin=o.id AND t1.destiny=d.id

我在这里附加SQL小提琴链接。 http://sqlfiddle.com/#!9/ecf5ae