Sql 如何连接两个表在不存在id为空的行上获得记录显示
我想要下面提到的预期结果。 下面是SQL查询:Sql 如何连接两个表在不存在id为空的行上获得记录显示,sql,sql-server,Sql,Sql Server,我想要下面提到的预期结果。 下面是SQL查询: +-------------------------------------------+ | student Details | +-------------------------------------------+ |DetailsID(Idendtity)| StudentID| subjectID | | 1 | 101 | 1001
+-------------------------------------------+
| student Details |
+-------------------------------------------+
|DetailsID(Idendtity)| StudentID| subjectID |
| 1 | 101 | 1001 |
| 2 | 101 | 1002 |
+-------------------------------------------+
+-------------------------------------------+
| Assign student |
+-------------------------------------------+
| AssingID | StudentID| subjectID |
| 1 | 101 | 1001 |
| 1 | 101 | 1002 |
+-------------------------------------------+
SELECT Distinct * FROM
tbl_Studentdetails s LEFT OUTER JOIN
tbl_Assignstudent a ON s.studentID = a.studentID
WHERE AssignId=1
实际结果:
SELECT Distinct * FROM
tbl_Studentdetails s LEFT OUTER JOIN
tbl_Assignstudent a ON s.studentID = a.studentID
WHERE AssignId=1
预期结果:
SELECT Distinct * FROM
tbl_Studentdetails s LEFT OUTER JOIN
tbl_Assignstudent a ON s.studentID = a.studentID
WHERE AssignId=1
+----------------------------------------+
| StudentID | subjectID | Exam 1 | Exam2 |
| 101 | 1001 | 10:00 | 10:00 |
| 101 | 1002 | 01:00 | 02:00 |
+----------------------------------------+
WHERE
子句中的AssignId条件使左连接
返回常规的内部连接
结果。将条件移动到ON
子句以获得trueLEFT JOIN
结果:
SELECT Distinct * FROM
tbl_Studentdetails s LEFT OUTER JOIN
tbl_Assignstudent a ON s.studentID = a.studentID
WHERE AssignId=1
+----------------------------------------+
| StudentID | subjectID | Exam 1 | Exam2 |
| 101 | 1001 | 10:00 | 10:00 |
| 101 | 1002 | 01:00 | 02:00 |
| 101 | 1003 | NULL | NULL |
+----------------------------------------+
没有
主题1003
。对于Exam1、Exam2
列也是如此。他们从哪里来?对不起,我错过了学生表主体D最后一行的第一个表1003@asanraj . . . 不,没有。您应该编辑问题以显示实际数据。