gpt4 book ai didi

MySQL - 选择不匹配或有条件的行

转载 作者:行者123 更新时间:2023-11-29 06:48:35 25 4
gpt4 key购买 nike

到目前为止我还想不通,我有这些表:

  • students - 列:id, name
  • stud_class - 列:students_id、class_id
  • class - 列:id、courses_id
  • 类(class) - 列:id、name

我需要选择在 stud_class 表中没有匹配行的学生 OR 那些不属于给定类(class)类(class)的学生(给定的类(class)是一个参数)。

例如:选择没有任何类(class)的学生或在类(class)中的学生,但不选择course.id = 2的类(class)。

到目前为止我已经这样做了,但它不起作用,查询没有返回任何行。我知道这有点令人困惑,但我不知道在这种情况下如何使用 JOINS。

SELECT  students.id, students.name 
FROM students, stud_class, class
WHERE ( NOT (students.id = stud_class.students_id) )
OR ( (students.id=stud_class.students.id) AND
(stud_class.class_id=class.id) AND
( NOT (class.course_id=2) )
);

最佳答案

如果我对您的问题的解释是正确的,那么您正在寻找所有不在某门类(class)类(class)的学生 - 无论他们是否有其他类(class)。在那种情况下,这行得通吗?

SELECT id, name FROM students
WHERE id NOT IN (
SELECT stud_class.students_id FROM stud_class, class
WHERE stud_class.class_id = class.id
AND class.courses_id = 2
)

子查询获取类(class) 2 类(class)中所有学生的 ID(根据您的示例),主查询获取所有不在该列表中的学生的 ID。

关于MySQL - 选择不匹配或有条件的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17077516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com