如果LEFT JOIN表记录计数大于1,则排除行

时间:2017-08-04 06:27:16

标签: sql sql-server database join left-join

两张桌子:

表1 fax_history

fax_key
1001
1002

表2> fax_history_status

fax_key     Status
1001        NEW
1001        SUCCESS
1002        NEW

现在我需要写一个join query,它只返回fax_key=1002条记录,因为fax_key=1001fax_history_status表格中有超过一条记录。

所以查询结果应为:

fax_key     status
1002        NEW

2 个答案:

答案 0 :(得分:2)

你可以使用having过滤行 选择a.fax_key 来自fax_history a 内联接传真_history_status b on a.fax_key = b.fax_key  按a.fax_key分组  有计数(*)= 1 对于状态,您可以使用(假)聚合函数,例如: 选择a.fax_key,min(b.status) 来自fax_history a 内联接传真_history_status b on a.fax_key = b.fax_key  按a.fax_key分组  有计数(*)= 1

答案 1 :(得分:0)

您可以使用像

这样的基本查询
SELECT * FROM fax 

INNER JOIN faxstatus ON fax.faxkey=faxstatus.faxkey AND faxstatus.faxkey IN

(

SELECT faxkey  FROM faxstatus

GROUP BY faxkey

HAVING COUNT(faxkey)=1


)