SQL Server查询无返回结果:User_History表Event_Id为空时如何获取数据?
解决User_History表Event_Id为空时无查询结果的问题
你的问题出在使用了内连接(INNER JOIN),这种连接只会返回两张表中完全匹配连接条件的行。当User_History的Event_Id为空时,无法和List_of_Events的Event_Id(int类型,通常非空)匹配,自然不会返回任何结果。
要保留User_History的所有行,不管Event_Id是否为空,你需要改用左连接(LEFT JOIN),并将User_History作为左表(主表):
Select E.Event_Name As 'Event', H.GIN, H.GID, H.UPN, H.OneDrive, H.SharePoint, H.Mailbox, H.Event_Date, H.Extra From User_History H Left Join List_of_Events E on E.Event_Id = H.Event_Id
补充优化:
- 左连接会保留左表(
User_History)的所有记录,即使右表(List_of_Events)中没有匹配的Event_Id,此时Event_Name列会显示NULL。 - 如果想给空的
Event_Name设置默认显示文本,可以用COALESCE函数处理:Select COALESCE(E.Event_Name, '无关联事件') As 'Event', H.GIN, H.GID, H.UPN, H.OneDrive, H.SharePoint, H.Mailbox, H.Event_Date, H.Extra From User_History H Left Join List_of_Events E on E.Event_Id = H.Event_Id
内容的提问来源于stack exchange,提问作者aasenomad
相关产品推荐
相关产品推荐

