获取与特定行组关联的行的行号

时间:2014-06-06 04:57:58

标签: mysql sql

我在MySQL数据库中有一个表,如下面的snap shot所示。

enter image description here

我需要根据rating_id(主键)获取当前行号,并在每组产品中

目前,以下SQL从表中的所有行获取基于rating_id的行号。

SELECT rownum 
FROM   (SELECT @rownum := @rownum + 1 AS rownum, 
               tbl.rating_id 
        FROM   rating tbl, 
               (SELECT @rownum := 0)t 
        ORDER  BY tbl.rating_id DESC)t 
WHERE  rating_id = ?

如何将此查询限制为特定产品组(prod_id)?

换句话说,如何从一组特定产品(prod_id)的行中获取行号?

1 个答案:

答案 0 :(得分:2)

我猜你需要分别计算每组PROD_ID。在这种情况下,您应该添加一个用户定义的变量来存储以前的PROD_ID,并在新的PROD_ID组启动时重置@rownum

SELECT rownum,rating_id,prod_id 
FROM   (SELECT if(prod_id=@prev_prod,@rownum := @rownum + 1,@rownum:=1)
               AS rownum, 
               tbl.rating_id,
               tbl.prod_id,
               @prev_prod:=prod_id  
        FROM   rating tbl, 
               (SELECT @rownum := 1,
                       @prev_prod:=NULL)t 
        ORDER  BY tbl.prod_id)t 
WHERE  rating_id = ?

SQLFiddle demo