【发布时间】:2013-12-28 20:45:10
【问题描述】:
我正在寻找优化的查询
让我给你看一个小例子。
假设我有一个表,其中包含三个字段 studentId, teacherId and subject
现在我想要那些物理老师只教一个学生的数据,即
老师 300 只教学生 3 等等。
到目前为止我已经尝试过什么
select sid,tid from tabletesting with(nolock)
where tid in (select tid from tabletesting with(nolock)
where subject='physics' group by tid having count(tid) = 1)
and subject='physics'
上述查询运行良好。但我想要不同的解决方案,其中 我不必扫描同一张表两次。
我也尝试使用Rank() 和Row_Number(),但没有结果。
仅供参考:
我已经向您展示了一个示例,这不是我正在使用的实际表格,我的表格包含大量的行和列,并且 where 子句也非常复杂(即日期比较等),所以我不想在子查询和输出查询中给出相同的 where 子句。
【问题讨论】:
标签: sql sql-server database sql-server-2008