在嵌套 sql 查询中需要帮助

Need help in nested sql queries

请帮我解决这个问题

SELECT * 
FROM documents 
WHERE doc_id <> (SELECT doc_id 
                 FROM doc_submitted 
                 WHERE student_IDNUM = 131009685)

我想要的是获取所有不在doc_submitted.

中的文档

尝试不在:

NOT IN 将忽略 来自主查询的记录,这些记录在子查询中可用

SELECT * FROM documents WHERE doc_id NOT IN 
(
     SELECT doc_id FROM doc_submitted WHERE student_IDNUM = 131009685
)

我通常建议 NOT EXISTS 而不是 NOT IN,因为即使子查询中的一行具有 NULL 值,NOT IN returns 零行:

SELECT d.*
FROM documents d
WHERE NOT EXISTS (SELECT 1
                  FROM doc_submitted ds
                  WHERE ds.doc_id = d.docid AND ds.student_IDNUM = 131009685
                 )

您也可以使用左联接来省略不需要的记录。

SELECT a.* 
FROM documents a
  LEFT JOIN  doc_submitted b ON   a.doc_id=b.doc_id AND b.student_IDNUM = 131009685 
WHERE b. doc_id IS null

它被称为反连接,与许多关系运算符一样,SQL 中没有直接等效项。相反,我们必须从各种解决方法中进行选择,例如这是一个:

SELECT doc_id 
  FROM documents 
EXCEPT
SELECT doc_id 
  FROM doc_submitted 
 WHERE student_IDNUM = 131009685