如何获取不在另一个表中的筛选记录

时间:2015-11-11 21:53:57

标签: sql-server

我使用以下查询从External_Blk_Itm_Contracts表中检索记录。

所以在BudContractSummary表中我有TankId和ContractId。

所以这里我要从External_Blk_Itm_Contracts表中检索所有记录,条件是相同的TankId和contractId不应该在BudContractSummary表中

但可以是不同的组合。但不是同一个组合

我该怎么做

    SELECT  BTANK.TANKID, BCON.CONTRACTID FROM External_Blk_Itm_Contracts EBIC
INNER JOIN BUDTERMINALS BT ON BT.MBFTERMINALNAME = EBIC.TerminalName
INNER JOIN BudCustomers BC ON BC.LegalName = EBIC.CustomerName
INNER JOIN BUDCONTRACTS BCON ON BCON.CONTRACTNAME = EBIC.ContractName AND BCON.TERMINALID = BT.TERMINALID AND BCON.CUSTOMERID = BC.CustomerID
INNER JOIN BUDTANKS BTANK ON BTANK.TERMINALID = BT.TERMINALID 
LEFT JOIN BudContractSummary BCS ON BCS.TankID = BTANK.TANKID AND BCS.ContractID = BCON.CONTRACTID 

1 个答案:

答案 0 :(得分:1)

要获取不在BudContractSummary中且具有相同TankID和ContractID的记录,请添加一个查找BCS.TankID IS NULL的WHERE条件,如下所示:

WHERE BCS.TankID IS NULL

由于您使用TankID和ContractID在该表上完成了左连接,因此WHERE条件将从结果集中删除这些记录。