我有这些记录:
Table siswa
student_id | student_name |
---------------------------
1 | Abi |
2 | Bayu |
3 | Charles |
Table nilai
semester | subject | student_id | mark |
----------------------------------------
1 | 1 | 1 | 7 |
1 | 1 | 2 | 9 |
1 | 1 | 3 | 8 |
1 | 2 | 1 | 4 |
1 | 2 | 2 | 6 |
2 | 1 | 1 | 9 |
我将选择第 2 学期和第 1 科目中的所有学生姓名。我期望的结果如下:
student_name | mark
-------------------
Abi | 9
Bayu | null
Charles | null
我已经尝试过这个查询,但它不起作用。我该怎么做?
SELECT s.name FROM siswa s LEFT OUTER JOIN nilai n ON s.student_id = n.student_id
WHERE n.semester = '2' AND n.subject = '1'
最佳答案
也许您正在寻找这样的东西:
SELECT s.student_name, n.mark FROM siswa s
LEFT JOIN nilai n ON s.student_id = n.student_id AND semester = 2 AND subject = 1
您需要处理左连接
中的结果。如果您在 where
子句上执行此操作,那么您将删除它们。
关于MySQL - 使用 LEFT OUTER JOIN 和 WHERE 子句选择记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19342089/