set @row=0;
set @mid=0;
set @cid=0;
update hotmcontent_ranking_20190304_20190310 inner join(
SELECT id, apid, acid, readcount,
case when @mid = apid and @cid=acid then @row:=@row+1 else @row:=1 end ranking,
@mid:=apid,
@cid:=acid
FROM hotmcontent_ranking_20190304_20190310
where acid<>0
order by apid,acid,readcount desc
) c on hotmcontent_ranking_20190304_20190310.id = c.id set hotmcontent_ranking_20190304_20190310.ranking = c.ranking;
現在報錯:An error occured in multi-table update
表里面有近300萬資料。
我要給資料做先分組再排名。
排名欄位ranking。搞不定了。在線等挺急的
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
怎么搞都不行。無語了。。uj5u.com熱心網友回復:
給你改了一下,不知道邏輯是不是這樣的。如果慢,增加索引apid,acid,readcount。
UPDATE
hotmcontent_ranking_20190304_20190310 t
SET
t.ranking =
(SELECT
COUNT(0)
FROM
(SELECT
t.apid,
t.acid,
t.readcount
FROM
hotmcontent_ranking_20190304_20190310 t) tt
WHERE tt.apid = t.apid
AND tt.acid = t.acid
AND tt.readcount <= t.readcount);
uj5u.com熱心網友回復:
謝啦。我是要先分組然后再計算排名ranking
你這個是求總數。?
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/68477.html
標籤:MySQL
上一篇:VFP 如何讓combox系結的資料隨滑鼠一起滾動?
下一篇:mysql鏈接資料庫,連接不了
