在 SQL Server 中使用不存在

Posted

技术标签:

【中文标题】在 SQL Server 中使用不存在【英文标题】:Using not exists in SQL Server 【发布时间】:2015-05-18 09:00:14 【问题描述】:

我有两张桌子。

Doctype
-----------
doctypeid 
doctype 

DocumentList
-----------------
doclistid (pk), 
projectid, 
doctypeid, 
docfile(binary)

我想从documentlist 表中获取所有projectiddoctypeid,其中DocumentList 表中不存在doctypeid 列表(来自Doctype 表)。

【问题讨论】:

你是在断言你想要一个表中的所有 doctypeid,而 doctypeid 不在表中? 如果您先搜索,有很多示例说明如何执行此操作:***.com/search?q=%5Bsql-server%5D+not+exists Doctypeid 是主列表。 DocumentList 表包含多个具有 doctypeid 的文档。我想获取不在文档列表表中的所有 doctypeid。这样我就可以提醒用户这些文件仍然丢失。 表名已更正。 【参考方案1】:

如果我理解你的问题,你可能想使用这样的东西:

SELECT projectid, doctypeid
FROM DocumentList 
WHERE doctypeid NOT in(1,2,3,4...n)

【讨论】:

【参考方案2】:
SELECT  MD.projectid ,
        MD.doctypeid
FROM    my_DocumentList MD
WHERE   NOT EXISTS ( SELECT Mdt.doctypeid
                     FROM   MY_Doctype Mdt
                     WHERE  doctypeid IN ( SELECT   MD.doctypeid ) )

【讨论】:

【参考方案3】:

如果您想要DocumentList 中的projectiddoctypeid 列表,它的doctypeid 在Doctype 中不存在,请使用:

SELECT 
    projectid, 
    doctypeid
FROM 
    DocumentList
WHERE 
    NOT EXISTS(SELECT 1 
               FROM Doctype 
               WHERE Doctype.doctypeid = DocumentList.doctypeid)

【讨论】:

以上是关于在 SQL Server 中使用不存在的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server不存在或访问被拒绝

SQL Server (WINCC) 不存在

错误信息:无法连接: SQL Server 不可用或不存在。

仅当行不存在时,如何在 SQL Server 中执行插入操作? [复制]

提示SQL server不存在或拒绝访问怎么办?

连接SQL SERVER数据库提示不存在或访问被拒绝