考虑像联盟和ORDER BY
tbl_ranks
--------------------------------
family_id | item_id | view_count
--------------------------------
1 10 101
1 11 112
1 13 109
2 21 101
2 22 112
2 23 109
3 30 101
3 31 112
3 33 109
4 40 101
4 51 112
4 63 109
5 80 101
5 81 112
5 88 109
表我需要生成与前两名(2)行设置家庭ID的子集的结果(比如,1,2,3和4)按查看次数排序。 我想这样做
select top 2 * from tbl_ranks where family_id = 1 order by view_count
union all
select top 2 * from tbl_ranks where family_id = 2 order by view_count
union all
select top 2 * from tbl_ranks where family_id = 3 order by view_count
union all
select top 2 * from tbl_ranks where family_id = 4 order by view_count
但是,当然,为了通过是无效的工会所有以该方式上下文。有什么建议么?我知道我可以运行一组4个查询,存储结果到一个临时表,并选择温度作为最终结果的内容,但我宁愿避免使用临时表如果可能的话。
注:在真正的应用程序,每个家庭的ID记录数是不确定的,并且view_counts,因为它们出现在上面的例子也并不固定。
我修改这个使用CTE来代替嵌套选择的,但除此之外,它是完美的。谢谢! – 2009-12-10 18:40:12