当做数据查询时需要分组,因为只有一列不同,同时还需要保留不同的列,使其不能受到影响。这时用 distinct 和 group by 就不能解决问题了。
就需要用到 临时表 来做到想要的结果。
// ㈠ 先把稍后用到的临时表从临时数据库中删除。
if object_id('tempdb..#temp_table') is not null
Begin
drop table #temp_table
End
//㈡ 把从数据表中查出的数据放到临时表中 。注意此处 identity 的使用 ,它是一个自增的变量,可以为每一列分一个由大到小的 int 型值 。
//因为用到了 order by 排序,因此在第三步时用 min()聚合函数就会取出需要的那条记录。
select top 60 identity(int,1,1) id ,name, factoryname,catalogname,file_name,img2 into #temp_table
from tableName order by view_count desc
// ㈢ 在这就可以用 min(id) 聚合函数来取出结果集
select top 6 * from #temp_table where id in(
select min(id) from #temp_table group by factoryname )