1. 程式人生 > >mysql 分組內 排序

mysql 分組內 排序

order server 內容 pict 賦值 sqlserver sel 分享 tle

mysql 分組內 排序 類似於 sqlserver over partition by

因為mysql中木有sqlserver over partition by這個函數,要從sqlserver 中把查詢遷到mysql ,遇到了一些問題,暫時是這樣解決的

select id,     CreationTime,    Sku from product_picture 

返回結果:

技術分享圖片

1.同組SKU 給createTime排序

2.同組SKU

定義變量後循環賦值:

 SELECT
    id,
    rank,
    rank2,
    CreationTime,
    Sku
FROM ( SELECT *, @rownum := @rownum + 1, IF ( @pdept = heyf_tmp.Sku, @rank := @rank + 1, @rank := 1 ) AS rank, @pdept := heyf_tmp.Sku, IF ( @pdept2 != heyf_tmp.Sku, @rownum2 := @rownum2 + 1, @rownum2 ) AS rank2, @pdept2 := heyf_tmp.Sku FROM ( -- 只需要改此括號中內容
SELECT * FROM product_picture ORDER BY Sku ASC, CreationTime DESC ) heyf_tmp, ( SELECT @rownum := 0, @pdept := NULL, @rank := 0 ) a , ( SELECT @rownum2 := 1, @pdept2 := NULL) b ) result;

返回結果:

技術分享圖片

rank :表示同組sku下的createtime排序結果

rank1:表示同組sku

mysql 分組內 排序