加入sql表以选择连接表中不存在的记录

时间:2014-06-06 13:03:49

标签: mysql sql

如何连接表以选择连接表中不存在的记录。 例如。我有一个表格文件,学生,文件夹

我正在开发学生支付系统,因此我想选择在某个学期尚未付款的学生

1.Table学生和文件可以在student.student_id

加入

2.Table文件夹存储学期可以与folder.folder_id

中的文档连接

2 个答案:

答案 0 :(得分:2)

文件表中不存在的所有学生:

select 
  students.*
from
  students
left join
  documents on documents.student_id = students.student_id 
where
  documents.document_id is null

为了选择学期,它有点棘手,但它有相同的逻辑:

select 
  students.*
from
  students
left join
  (
   select documents.* from documents 
   inner join folders on folders.folder_id = documents.folder_id
   where folders.folder_id = 3
   ) as t1 on t1.student_id = students.student_id 
where
  t1.document_id is null

SQLFiddle demo

您可以查看/阅读此Visual Representation of SQL Joins

答案 1 :(得分:2)

使用LEFT JOIN构造,并查找您想要丢失的表格中包含NULL数据的行。

对于您的特定示例,例如:

SELECT Student.Student_id
FROM Student
    LEFT JOIN Documents ON Student.Student_id = Documents.Student_id
WHERE Documents.Student_id IS NULL