在PostgreSQL中如何连接两个表选择单独的信息

时间:2013-04-25 05:14:19

标签: sql postgresql join

加入时遇到问题。

我有一张名为subjects

的表格
subno   subname
30006   Math
31445   Science
31567   Business

我还有一个名为enrollment

的表
subno sno   
30009 980008
4134  988880

等。

如何列出学生9800007的科目编号和科目名称?

2 个答案:

答案 0 :(得分:3)

如果您想为没有注册的学生返回零行,请使用LEFT [OUTER] JOIN,例如:

SELECT e.sno, s.subno, s.subname
FROM enrollment e LEFT OUTER JOIN subjects s ON s.subno = e.subno
WHERE e.sno=988880;

要为没有注册的学生返回任何行,请使用INNER JOIN

SELECT e.sno, s.subno, s.subname
FROM enrollment e INNER JOIN subjects s ON s.subno = e.subno
WHERE e.sno=988880;

请注意,联接顺序对于外部联接很重要(RIGHT [OUTER] JOINLEFT [OUTER] JOIN - OUTER关键字是可选的)但不适用于INNER JOIN。出于这个原因,@ swetha的答案有一个问题:如果您正在寻找有关学生的信息,则联接顺序会被颠倒。

请参阅this SQLFiddle

答案 1 :(得分:1)

试试这个

 select * 
 from subjects s 
   left join enrollment e on s.subno = e.subno  
 where sno=9800007