左连接返回SQL中的总记录而不是匹配记录

时间:2017-10-03 09:37:41

标签: mysql

我在两个表之间写了一个Left连接。我的表结构是

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

实际上,Deal详细信息中的总行数为100,但即使在写入where子句后,它也会返回100行。

我的表结构是

DEALDETAILS

DLNOPK | STARTDT

DEALCUSTOMERDETAILS

DLNO | CUSTOMERID

where子句有什么问题?

3 个答案:

答案 0 :(得分:0)

您需要使用right joinDEALCUSTOMERDETAILS left join DEALDETAILS

因为你的where条件绑定到DEALCUSTOMERDETAILS表。

SELECT  D.DLNOPK, D.STARTDT
FROM    DEALCUSTOMERDETAILS P 
LEFT JOIN 
DEALDETAILS D        
ON P.DLNO = D.DLNOPK
    WHERE P.CUSTOMERID = 'ABCD';

ELSE

 SELECT  D.DLNOPK, D.STARTDT
    FROM    DEALDETAILS D
    RIGHT JOIN 
     DEALCUSTOMERDETAILS P        
    ON P.DLNO = D.DLNOPK
        WHERE P.CUSTOMERID = 'ABCD';

答案 1 :(得分:0)

这里是您询问的总查询^^

&#13;
&#13;
SELECT  D.DLNOPK, D.STARTDT
FROM    DEALDETAILS D
LEFT JOIN   DEALCUSTOMERDETAILS P
ON    D.DLNOPK =  P.DLNO
WHERE P.CUSTOMERID = 'ABCD'; 
&#13;
&#13;
&#13;

答案 2 :(得分:0)

使用此查询对我来说效果很好

SELECT  D.DLNOPK, D.STARTDT
FROM    DEALDETAILS D
LEFT JOIN DEALCUSTOMERDETAILS P 
    ON P.DLNO = D.DLNOPK
WHERE P.CUSTOMERID = 'ABCD'; 

请参阅this fiddle

相关问题