MySQL如何获得每组的前N行

时间:2017-08-17 09:07:45

标签: mysql greatest-n-per-group

我已经研究了很长一段时间的答案,我在一个页面上找到了一个非常好的解决方案,但是我工作不顺利,我想知道为什么?该网址为:http://www.sqlines.com/mysql/how-to/get_top_n_each_group

我按照方法,这是我的代码:

SELECT id,  
type,
IF (@type = type, @type_rank + 1, 1) AS type_rank, 
@type := type 
FROM imagesforctool 
LIMIT 10

结果是:

    id      type    type_rank   @type := type
    192499  Men       1          Men
    192500  Men       1          Men
    192504  Men       1          Men
    192508  Men       1          Men
    192514  Men       1          Men
    192515  Men       1          Men
    192516  Men       1          Men
    192518  Men       1          Men
    192519  Men       1          Men
    192520  Men       1          Men

type_rank列不加。

有什么问题?

2 个答案:

答案 0 :(得分:0)

SELECT id,  
type,
@type_rank:=IF (@type = type, @type_rank + 1, 1), 
@type := type 
FROM imagesforctool ORDER BY type
LIMIT 10

这是正确的查询。 您需要指定@type_rank

的值

答案 1 :(得分:0)

尝试此查询

SELECT 
  id,  
  type,
  @type_rank := IF(@current_type = type, @type_rank + 1, 1) AS type_rank,
  @current_type := type
FROM 
  imagesforctool 
ORDER BY
  type
LIMIT
  10