不确定如何为以下任务构架SQL查询

时间:2018-10-28 04:05:01

标签: mysql sql

Tables

我的数据库中有上述表格。我首先从上一个PHP页面收到一个COURSE变量。我需要打印学生姓名列表以及尚未参加该课程的他们的student_Ids。对于上面的表,如果我收到的变量是A,那么我需要将Jake和他的student_id 一起打印。由于 Jake的学生ID为3,因此与课程A没有关联。

我尝试了以下查询,但该查询似乎无法正常工作,并且不确定哪里出错了

SELECT DISTINCT T1.name, T1.student_id 
FROM Table 1 T1, Table 2 T2
WHERE T1.student_id = T2.student_id AND
T2.COURSE != :variable
ORDER BY T1.name ASC, 
         T1.student_id ASC

变量:A

3 个答案:

答案 0 :(得分:1)

我很欣赏这看起来很老套,但是话又说回来,我也是...

SELECT DISTINCT x.*
  FROM t1 x
  LEFT
  JOIN t2 y
    ON y.student_id = x.student_id
   AND y.course = 'a'
 WHERE y.student_id IS NULL;

答案 1 :(得分:0)

有很多选择。例如,您可以使用子查询:

SELECT name, student_id FROM t1 WHERE student_id NOT IN (SELECT student_id FROM t2 WHERE course='A')

答案 2 :(得分:0)

您可以使用NOT EXISTS查找未参加该课程的学生的列表:

SELECT * FROM T1
WHERE NOT EXISTS (
    SELECT * FROM T2
    WHERE T1.StudentId = T2.StudentId
        AND T2.Course = :variable
    )
ORDER BY name ASC, student_id