[英]SQL – Find all records in one table where linked records don’t exist
我看到的其他“在一个表中但不在另一个表”中的线程略有不同。
我有3张桌子:
ProductFeed ProductFeedID INT ProductName NVARCHAR(30) Product ProductID INT ProductFeedID INT StorefrontID INT Storefront StorefrontID INT StorefrontName NVARCHAR(30)
我希望做的是一个查询,显示所有带有StorefrontID和StorefrontName的ProductFeed记录,其中不包含该店面的产品记录。 所以像这样:
ProductFeedID ProductName StorefrontID StorefrontName 123 iPod 1 MyStore1 123 iPod 4 MyStore4 234 TShirt 2 MyStore2 234 TShirt 4 MyStore4 345 Coffee Mug 5 MyStore5 etc.
我正在使用SQL Server2012。有人可以帮忙吗?
如果我理解正确,那么可以通过生成产品Feed和商店前沿的所有可能组合来解决此问题,然后使用left join
。 失败的组合是您想要的组合:
select pf.*, sf.*
from productfeed pf cross join
storefront sf left join
product p
on p.ProductFeedID = pf.ProductFeedID and
p.StoreFrontId = pf.StoreFrontId
where p.ProductId is null
-我认为这是可以理解的。
select pf.*, sf.*
from productfeed pf
cross join storefront sf
where not exists (select 1
from product p
where p.ProductFeedID = pf.ProductFeedID
and p.StoreFrontID = sf.StoreFrontID)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.