SQL查询不返回任何数据

时间:2017-09-14 00:19:29

标签: mysql sql

所以我在尝试返回有两个不相等的条件的记录时遇到问题。

我有三个表:Person,Student和Instructor。我正在尝试返回既不是学生也不是教师的人员名单。

以下是表格(它们都填充了符合所有条件的值):

    CREATE TABLE Person (
    Name char (20),
    ID char (9) not null,
    Address char (30),
    DOB date,
    Primary key (ID)
    );

    CREATE TABLE Instructor (
    InstructorID char (9) not null references Person (ID),
    Rank char (12),
    Salary integer,
    PRIMARY KEY (InstructorID)
    );

    CREATE TABLE Student (
      StudentID char (9) not null REFERENCES Person (ID),
      Classification char (10),
      GPA DOUBLE,
      MentorID char (9) REFERENCES Instructor (InstructorID),
      CreditHours integer,
      PRIMARY KEY (StudentID)
    );

这是我的回答/查询:

    SELECT Person.ID, Person.Name, Person.DOB
    FROM Person
    RIGHT JOIN Student ON Person.ID = Student.StudentID
    RIGHT JOIN Instructor ON Person.ID = Instructor.InstructorID
    WHERE NOT Person.ID = Student.StudentID AND Person.ID = 
              Instructor.InstructorID;

我在连接上搞砸了什么?我没有收到任何错误,但查询也没有返回任何内容。我尝试了所有连接(左,右,全)无济于事。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

您可以使用NOT IN来确定记录是否不在这两个表中

SELECT id, 
       name, 
       dob
  FROM Person
 WHERE id NOT IN (SELECT studentid
                    FROM student)
   AND id NOT IN (SELECT instructorid
                    FROM instructor);

答案 1 :(得分:0)

你非常接近。首先,使用LEFT JOIN,以便将所有内容保存在第一个表中。其次,使用与NULL的比较来查看是否存在匹配:

SELECT p.ID, p.Name, p.DOB
FROM Person p LEFT JOIN
     Student s
     ON p.ID = s.StudentID LEFT JOIN
     Instructor i
     ON p.ID = i.InstructorID
WHERE s.StudentID IS NULL AND i.InstructorID IS NULL;