MySQL - 使用 LEFT OUTER JOIN 和 WHERE 子句选择记录

标签 mysql sql

我有这些记录:

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/

相关文章:

SQL查询-过滤掉仅包含空格的字段

sql - 根据列值升序和降序

MySQL 查询不起作用

java - J2SE 上的 DataSource 和 DriverManager

sql - MySQL 不支持子查询中的 limit 子句,我该怎么做?

sql - 黑斑羚查询 : Find value in pipe-separated list

mysql - 从 MySQL 按小时获取条目

php - 循环进入 PDO 请求以检查变量是否存在?

php - 使用引号从php数组创建WHERE IN()子句

mysql - 如何提高此 SELECT 查询 JOIN 的性能