SQL Server查询中的WHERE子句和LEFT JOIN

时间:2015-02-20 12:03:35

标签: sql sql-server

我有这个问题:

SELECT 
    EnrollmentID, MarketID 
FROM 
    Contracts AS CO
LEFT JOIN 
    Customers AS C ON C.EnrollmentID = CO.BatchID AND MarketID = 'AB'
WHERE 
    C.EnrollmentID IS NULL

在这里,我有一个问题,在此查询中,查询可能会验证左连接中MarketID = 'AB'的数据,因为根据WHERE条件?

我收到的EnrollmentIDsMarketIDs的结果都是NULL

1 个答案:

答案 0 :(得分:0)

注意:LEFT JOIN关键字会返回左表中的所有行(合同),即使右表(客户)中没有匹配项。 < / p>

现在,如果你想选择正确的表列,并且右表中没有匹配的数据,比如。

SELECT CO.EnrollmentID, CO.MarketID ,C.Some_col
FROM Contracts AS CO
LEFT JOIN Customers AS C ON C.EnrollmentID = CO.BatchID

所以, C.Some_col 列将获得右表中没有匹配行的所有空值。我认为这就是为什么你得到空值的原因 MarketIDs和EnrollmentIDs。

希望,这对你有所帮助。