显示指向同一表的两个id字段的两个链接值

时间:2019-02-14 09:41:29

标签: sql postgresql self-join

在我的PostgreSQL数据库中,我有一个像这样的表:

id|link1|link2|
---------------
1 | 34  | 66
2 | 23  | 8
3 | 11  | 99

link1link2字段都指向同一个表table2,该表具有iddescr字段。

我将执行一个SQL查询,以返回同一行的两个字段的iddescr值,如下所示:

id|link1|link2|desc_l1|desc_l2|
-------------------------------
1 | 34  |66  | bla  | sisusj|
2 | 23  | 8  | ghhj | yui   |
3 | 11  | 99 | erd  |  bnbn |

我尝试了不同的查询,但是每个人每个id返回两行,而不是一行。 如何在PostgreSQL 9.04数据库中获得这些结果?

2 个答案:

答案 0 :(得分:2)

通常,此查询应为您工作。假设您的第一个表格名称为table_name。

SELECT t.id, t.link1, t.link2, 
    l1.descr AS desc_l1,
    l2.descr AS desc_l2
FROM table_name t 
LEFT JOIN table2 l1
ON t.link1 = l1.id
LEFT JOIN table2 l2
ON t.link2 = l2.id;

答案 1 :(得分:0)

您可以在这里使用案例,例如:

select link1,link2,
case
 when link1='34' and link2='66' then 'bla'
  when link1='23' and link2='8' then 'ghs'
   when link1='11' and link2='99' then 'erd'
end as desc_li,
case
 when link1='34' and link2='66' then 'sjm'
   when link1='23' and link2='8' then 'yur'
   when link1='11' and link2='99' then 'bnn'
end as desc_l2

from table1