通常,我不使用distinct
orgroupby
但在以下查询中,我需要使用它,因为如果我不使用,它会将结果相乘。我想获得至少有 1 个订单的所有用户。
select distinct us.* from dbo.users us join dbo.orders o on us.id = o.userId
是否可以避免使用distinct
或groupby
在这里?
您可以EXISTS
用于过滤器逻辑。
SELECT U.*
FROM dbo.Users U
WHERE EXISTS
(
SELECT TOP 1 1
FROM dbo.Orders O
WHERE O.UserId = U.Id
);
请注意,这只是编写此查询的不同方式,distinct
但不一定会提高查询性能。执行计划可能完全相同。您可以使用执行计划运行两个查询并进行比较。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句