我有两个表,并希望以排除第二个表中的所有值的方式将它们连接在一起。当我加入两个表时,我只需要表 1 中的值,而不需要两个表中的值或表 2 中的值。
我认为这可以通过 LEFT JOIN 或 LEFT OUTER JOIN 来完成,但我发现了一些奇怪的发现。
当我检查所有数据时,我有以下计数。
-- TOTAL LEADS: 10067
SELECT COUNT(*) FROM sold_leads AS sl
WHERE sl.affiliate_id IN(1000,1001,1002,1033)
AND sl.create_date >= '2013-1-1'
AND sl.lead_type = 'AUTO';
但是,当我尝试仅查找表 1 中的值时,我发现了一个更高的数字,这是不可能的。
-- How many had No suspension/dui, sr22, and <=2 accidents AND <=2 tickets: 13931
SELECT COUNT(*) FROM sold_leads AS sl
INNER JOIN drivers AS dr ON sl.lead_id = dr.lead_id
LEFT OUTER JOIN duis AS duis ON sl.lead_id = duis.driver_id
LEFT OUTER JOIN accidents AS ac ON sl.lead_id = ac.driver_id
WHERE sl.affiliate_id IN(1000,1001,1002,1033)
AND sl.create_date >= '2013-1-1'
AND dr.relationship_type = 'SELF';
总计数不可能少于我离开加入一些表并添加一些限制的计数。我究竟做错了什么。
另外,我知道我没有提供架构,但我将如何选择 <=2 事故。有一个带有 driver_id 的事故表,但我玩过 HAVING(COUNT(*)) 的不同变体并且没有运气。
帮助!?