簡體   English   中英

MySQL如何獲取每個組的前N行

[英]MySQL How To Get Top N Rows per Each Group

我一直在尋找答案的很長時間,我在一個頁面中找到了一個很好的解決方案,但是我工作得不好,我想知道為什么嗎? URL是: 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列不加。

怎么了?

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

這是正確的查詢。 您需要分配@type_rank

試試這個查詢

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM