我在连接两个表时遇到问题。
我有两个带有字段的表[如下所示]:
Table 1 : prospectus -
idprospectus(int(2)), subjectcode(varchar(40)), units(int(2))
Table 2 : Student -
studentid(int(10)), subjectcode(varchar(40)), grade(varchar(10)), remarks(varchar(30))
我想要的是连接这两个表,即使学生表中的主题代码值不存在(招股说明书表包含所有主题或主题代码,而学生表仅在学生注册后才包含主题代码)到该科目,它还包含学生就读的科目的成绩。)
我已经尝试执行下面的查询:
select p.subjectcode, s.grade, s.note
from prospectus p
left join student s on s.subjectcode=p.subjectcode
where s.studentid='2011-10258'
order by p.idprospectus
但是上面的查询只会给我这个:
--------------------------------
| subjectcode | grade | Note |
--------------------------------
| Eng | 89 | Passed |
| Math | 93 | Passed |
| Sci | 90 | Passed |
--------------------------------
我已经尝试过使用右连接、内连接、外连接,但它们都会给出与上面所示相同的输出。
您可以引用下面我的首选输出:
--------------------------------
| subjectcode | grade | Note |
--------------------------------
| Eng | 89 | Passed |
| Math | 93 | Passed |
| Sci | 90 | Passed |
| Soc | NULL | NULL |
| Lit | NULL | NULL |
--------------------------------
有人可以帮我摆脱这个吗?
最佳答案
这是因为您使用了 WHERE
子句,请尝试使用 AND
代替。
select p.subjectcode, s.grade, s.note
from prospectus p
left join student s on s.subjectcode=p.subjectcode
AND s.studentid='2011-10258'
order by p.idprospectus
关于mysql - 左连接不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26751495/