SQL Query以匹配另一个表中是否存在数据

时间:2016-02-11 09:55:07

标签: sql sql-server

我的数据库中有两个名为tblStockManagementtblFolding的表。我在Name表中列tblFolding,在FoldingID表中将列tblStockManagement作为外键。现在我的Winform中有comboBox,我希望来自Names表的组合框中的tblFolding项,但只有那些不在tblStockManagement表中的项目。

(因为如果数据已经在tblStockManagement表中,我不想再次选择数据。相反,我将在稍后更新数量。)

tblFolding Table

tblStockManagement Table

这些是两个表的屏幕截图。请告诉我我该怎么做

3 个答案:

答案 0 :(得分:1)

NOT EXISTS版本:

select *
from tblFolding f
where not exists (select * from tblStockManagement SM
                  where sm.FoldingID = f.FoldingID)

NOT EXISTS是" NULL安全",NOT IN不是

答案 1 :(得分:0)

这是你需要的。基本上是一个子查询,它获取所有折叠ID并且不在运算符I中使用,不包括那些匹配集。

SELECT Name
  FROM tblFolding 
  WHERE FoldingID NOT IN (
    SELECT FoldingID
    FROM tblStockManagement 
  )
;

答案 2 :(得分:0)

您可以使用SQL NOT条件

Select Name
From tblFolding
Where FoldingId Not In (Select FoldingId From tblStockManagement)
Order By Name