SELECT tmp.*,ROW_NUMBER() OVER (ORDER BY c_t_id desc ) AS c_rownum 
 FROM ( SELECT  b.c_t_id  FROM BBB b 
     INNER JOIN AAA a ON a.c_id = b.c_b_id WHERE b.c_t_id = '1') tmp这样一个语句会造成,有重复行。。 只有排序列与 WHERE 列 一样。。就会造成有重复数据。。
去掉排序或去掉inner 表或去掉 WHERE 条件都会回复正常
求大神解释..

解决方案 »

  1.   

     SELECT b.c_t_id,ROW_NUMBER() OVER (ORDER BY c_t_id desc ) AS c_rownum  
     FROM BBB b  
     INNER JOIN AAA a ON a.c_id = b.c_b_id
     WHERE b.c_t_id = '1'
    已简化成这样。。还是一样问题
      

  2.   

     c_t_id 与 b.c_t_id 不是同一个表中的
      

  3.   

    SELECT tmp.*,ROW_NUMBER() OVER (ORDER BY c_t_id desc ) AS c_rownum 
     FROM 
     ( 
     SELECT DISTINCT b.c_t_id FROM BBB b  INNER JOIN AAA a ON a.c_id = b.c_b_id  WHERE b.c_t_id = '1'
    ) tmp
    表連接估計是有一對多,用distinct /group by 去重復再排序
      

  4.   

    row_number不可能有重复序号生成,即使数据重复,也不可能,不知道你怎么弄的.