-----在一張表中存在,不在另外2張表寫法: select ISNULL(SUM(Amt),0) from A s WHERE s.CreateTime BETWEEN @from and @to AND s.TradeNo NOT IN ( select FlowNo from B1 WHERE FlowNo IS NOT null UNION SELECT FlowNo from B2 WHERE FlowNo IS NOT null ) 優化後: select ISNULL(SUM(Amt),0) from A s WHERE s.CreateTime BETWEEN @from and @to AND NOT EXISTS( SELECT 1 from B1 WHERE FlowNo IS NOT NULL AND TradeNo=FlowNo) AND NOT EXISTS( SELECT 1 from B2 WHERE FlowNo IS NOT NULL AND TradeNo=FlowNo)