加入时遇到问题。
我有一张名为subjects
subno subname
30006 Math
31445 Science
31567 Business
我还有一个名为enrollment
subno sno
30009 980008
4134 988880
等。
如何列出学生9800007的科目编号和科目名称?
答案 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] JOIN
和LEFT [OUTER] JOIN
- OUTER
关键字是可选的)但不适用于INNER JOIN
。出于这个原因,@ swetha的答案有一个问题:如果您正在寻找有关学生的信息,则联接顺序会被颠倒。
答案 1 :(得分:1)
试试这个
select *
from subjects s
left join enrollment e on s.subno = e.subno
where sno=9800007