连接sql表以选择连接表中不存在的记录[重复]
Posted
技术标签:
【中文标题】连接sql表以选择连接表中不存在的记录[重复]【英文标题】:Join sql tables to select records which does not exists in joined table [duplicate] 【发布时间】:2014-06-06 13:03:48 【问题描述】:如何连接表以选择连接表中不存在的记录。 例如。我有一个表格文件、学生、文件夹
我正在开发学生支付系统,因此我想选择某个学期没有支付的学生
1.table学生和文档可以在student.student_id加入
2.Table 文件夹存储学期它可以与文件夹中的文档连接。folder_id
【问题讨论】:
或者你可以用谷歌搜索“加入 sql 表以选择不存在的记录。” 【参考方案1】:文档表中不存在的所有学生:
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
【讨论】:
谢谢,第二个工作正常【参考方案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
【讨论】:
以上是关于连接sql表以选择连接表中不存在的记录[重复]的主要内容,如果未能解决你的问题,请参考以下文章