【发布时间】:2017-11-03 03:32:34
【问题描述】:
我的表结构如下:
dbo.Owner
OwnerID OwnerName
1 John
2 Marie
3 Alex
和 dbo.Pet
PetID PetTag Status OwnerID
1 A341 Active 1
2 A342 Inactive 1
3 A343 Active 2
4 A345 Active 2
我需要退回所有只有活跃宠物或没有宠物的主人。
所以在上面的这个例子中,我需要返回 Owner 2(所有宠物都处于活动状态)和 Owner 3(没有宠物)
我将使用实体框架在 C# 中提取数据,但纯 SQL 就足够了。
到目前为止,这是我想出的:
select mi.* from Owner o
join Pet p
on o.OwnerID= p.OwnerID
where o.Status='Active'
union select * from Owner
where OwnerID not in (select OwnerID from Pet)
现在,上面的查询有效,但它包含 OwnerID = 1。而且我想知道是否有一种方法可以在没有联合的情况下在 1 个查询中执行此操作。
【问题讨论】:
-
听听你简单的英语查询:我需要返回所有只有活跃宠物或没有宠物的主人。你需要一个简单的联合那些有活跃宠物的人和那些没有宠物的人。
标签: c# sql-server entity-framework