在嵌套 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
请帮我解决这个问题
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