SQL Server 2017中联接和子查询之间的差异

问题描述 投票:0回答:1

这是我的第一个查询

select r.[ProductID], [Name],
[Color], [UnitPrice] from [Production].[Product]r 


inner join [Sales].[SalesOrderDetail]d 
on d.productid = r.productid

**这是我的第二查询**

select [ProductID], [Name], [color] from
[Production].[Product] o where  [ProductID] in 
 (select [UnitPrice] from [Sales].[SalesOrderDetail] s
where s.ProductID=o.ProductID) 

firts查询正确地向我返回了我想要达到的目标,但是第一个小格返回了我null。我想使用第二查询具有相同的结果。有可能吗?

sql-server tsql
1个回答
0
投票

您可以使用exists

select p.*
from product p
where exists (select 1 from SalesOrderDetail sd where sd.productid = p.product);

您的第二个查询与第一个查询不同。它将ProductIDUnitPrice进行比较,这是无效的。应该不会产生任何结果。

© www.soinside.com 2019 - 2024. All rights reserved.