现在需要按点击率降序排列出前10条记录:
我是这样写的:
select top 10 * from music order by click_num desc;上面的语句没错,但有个问题就是:
数据刚开始的时候,所有的点击率(click_num)都是为0的,这样用上面的语句查询的结果就不止10条了,
我试过用 order by click_num,id desc,但这样也错误的
如何解决呢???谢谢!!

解决方案 »

  1.   

    你既然用top 10限定了,怎么会不止10条?呵呵,就算一开始点击率都是0,也只会列出10条
      

  2.   

    top 10 限定就只会出10条
      

  3.   

    肯定只有10条,如果要去掉点击0的纪录的话select top 10 * from music where click_num >0 order by click_num desc
      

  4.   

    top 10  肯定只会出十条啊  出了11条你来找我 
      

  5.   

    lz使用的是什么数据库,我记得access是这样的
      

  6.   

    access的top 10 *
    相当于
    t-sql的top 10 with ties *
      

  7.   

    你没加ties,肯定是10条,如果你是用sql2005
      

  8.   

    WITH TIES 指定从基本结果集中返回额外的行,对于 ORDER BY 列中指定的排序方式参数,这些额外的返回行的该参数值与 TOP n (PERCENT) 行中的最后一行的该参数值相同。只有在指定 ORDER BY 子句之后,才能在 SELECT 语句中指定 TOP ...WITH TIES。
      

  9.   

    在 TOP 中使用 PERCENT 和 WITH TIES
    以下示例获取所有雇员中薪水最高的 10% 的员工,并根据基本薪金按降序返回。指定 WITH TIES 可确保结果集中同时包含其薪水与返回的最低薪水相同的所有雇员,即使这样返回的雇员数会超过总数的 10% 也是这样。 复制代码 
    USE AdventureWorks ;
    GO
    SELECT TOP(10) PERCENT WITH TIES
    EmployeeID, Title, DepartmentID, Gender, BaseRate
    FROM HumanResources.Employee
    ORDER BY BaseRate DESC;
     
      

  10.   

    declare @ta table (id int , clicknum int)insert into @ta select 1,0
    union
    select 2,0
    union
    select 3,0
    union 
    select 4,0
    union
    select 5,0
    union
    select 6,0
    union
    select 7,0
    union 
    select 8,0
    union 
    select 9,0
    union 
    select 10,0
    union 
    select 11,0
    union 
    select 12,0select top 10 * from @ta 
    order by clicknum desc所影响的行数为 12 行)id          clicknum    
    ----------- ----------- 
    11          0
    10          0
    9           0
    8           0
    7           0
    6           0
    5           0
    4           0
    3           0
    2           0(所影响的行数为 10 行)