mysql - 恰好加入 1 条记录,即使条件匹配多条记录

标签 mysql sql join

示例查询

SELECT count(A.ID) 
FROM `TABLE_A` A LEFT JOIN `TABLE_B` B ON (A.ID=B.ID) 
WHERE .....

我需要:

即使 A.id 匹配表 B 中的多条记录,它也应该被视为只有一条。

实际查询

SELECT CampaignName,fsbcorponline.leads360campaigns.CostPerLead, 
count(fsbcorponline.leads360leads.id) leadCount,
count(CASE WHEN fsbcorponline.leads360leads.leadStatus like '%Contact Attempt%' OR                                
leadStatus like '%Call Back/Follow-up%' OR                                 
leadStatus like '%Working%' OR                                 
leadStatus like '%Credit Pulled%' OR                                 
leadStatus like '%Selected other Lender%' OR                                 
leadStatus like '%Pre-Approved%' OR                                 
leadStatus like '%Application Taken/Sent%' OR                                 
leadStatus like '%Application Received%' OR                                 
leadStatus like '%Submitted%' OR                                
leadStatus like '%Funded%' OR                                 
leadStatus like '%Future Opportunity%' OR                                 
leadStatus like '%Manager Review%' THEN 1 END ) leadContacted,         
COUNT(CASE WHEN fsbcorponline.leads360leads.lead_id IS NOT NULL THEN 1 END ) leadsToEncompass ,          
COUNT(CASE WHEN fsbcorponline.leads_to_loan.loan_closeDate IS NOT NULL AND loan_closeDate !='1900-01-01 00:00:00' THEN 1 END ) leadsToEncompassClose,         
COUNT(CASE WHEN fsbcorponline.leads_to_loan.loan_FundedDate IS NOT NULL AND loan_FundedDate !='1900-01-01 00:00:00' THEN 1 END ) leadsToEncompassFunded  
FROM (fsbcorponline.leads360leads LEFT JOIN fsbcorponline.leads360campaigns ON fsbcorponline.leads360leads.CampaignId=fsbcorponline.leads360campaigns.CampaignId)  
LEFT JOIN fsbcorponline.leads_to_loan ON fsbcorponline.leads360leads.id =lead_id  
Where 1=1 AND dateAdded between '11/24/2012 08:59:00' and '12/24/2012 08:59:00'AND CampaignName like '%TFSB.com%'

最佳答案

GROUP BY 子句可用于此目的:

SELECT COUNT(A.ID) 
FROM `TABLE_A` A LEFT JOIN `TABLE_B` B ON (A.ID=B.ID) 
WHERE .....
GROUP BY A.ID

关于mysql - 恰好加入 1 条记录,即使条件匹配多条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14023279/

相关文章:

mysql - 如何从MYSQL数据库中恢复已删除的行

sql - 来自多个表的内部连接 ​​sqlite

sql - 左连接和右连接查询

SQL Server 检查 IsNull 和零

php - 如何使事件记录多对多关系更容易在codeigniter中开发?

php - 多对多链接表的替代方案

php - 如何在 Laravel 5.4 中播种数据透视表?

mysql - 将表中的值(行)添加到另一个仅用于匹配变量

php - 连接评论列表的表并确定用户是否已经对评论投了赞成票/反对票

mysql - Laravel 转换现有用户系统多类型