我有以下sql查询来计算表MachineLog中的重复项。这个查询我直接在我的项目中使用ExecuteSqlCommand执行。但是执行时间超过1分钟。
select Count(*) from MachineLog where Id in
(
select Id from (
select *,
RANK() OVER ( PARTITION BY CompanyId, DeviceEnrollNo, InOutDate, InOutTime, MachineNo ORDER BY Id DESC )rank
From MachineLog
)T
where rank>1
)
现在我想在Linq中使用此查询,因为有更快的选项Any
。我有LinqPad,但它将Linq转换为SQL&不是SQL到Linq。 Linqer已经从我的系统中过期了。
有人可以帮忙吗?
答案 0 :(得分:0)
尝试这个,如果你只是想数数你为什么使用*虽然? 可能有这个帮助:
select Count(*) from MachineLog where Id in
(
select Id from (
select Id,
RANK() OVER ( PARTITION BY CompanyId, DeviceEnrollNo, InOutDate, InOutTime, MachineNo ORDER BY Id DESC )rank
From MachineLog
)T
where rank>1
)
答案 1 :(得分:0)
尝试使用CTE
;与cte AS( SELECT,ID RANK()OVER(PartI by CompanyId,DeviceEnrollNo,InOutDate,InOutTime,MachineNo ORDER BY Id DESC)AS排名 来自MachineLog ) 从MachineLog m中选择Count(*) JOIN CTE c ON c.id = m.ID. 在哪里c.rank> 1