mysql :=和=的區別及統計查詢結果行號
阿新 • • 發佈:2018-11-06
變數初始化:@rownum:=0
累加,標記行號:@rownum:[email protected]+1
SELECT rank FROM ( SELECT id, @rownum := CAST(@rownum AS SIGNED) + 1 AS rank FROM ( SELECT c.id, bcu.guid, COUNT(DISTINCT bcu.uguid) AS num FROM `b_record` bcu JOIN b_company c ON bcu.cguid = c.cguid WHERE bcu.updatetime BETWEEN (NOW() - INTERVAL 148 HOUR) AND NOW() AND c.state = 1 GROUP BY cguid ORDER BY num DESC ) s, (SELECT @rownum := 0) r ) t WHERE id = 123
完整程式碼如上圖所示,其中
SELECT c.id, bcu.companyguid, COUNT(DISTINCT bcu.userguid) AS num FROM `b_company_user_visit_record` bcu JOIN b_company c ON bcu.companyguid = c.companyguid WHERE bcu.updatetime BETWEEN (NOW() - INTERVAL 148 HOUR) AND NOW() AND c.state = 1 GROUP BY companyguid ORDER BY num DESC
上面一段查出結果
SELECT
id,
@rownum := CAST(@rownum AS SIGNED) + 1 AS rank
FROM
(
) s,
(SELECT @rownum := 0) r
上面一段新增行號,因為在java中,所以合併成一條語句,而在sql中可分開寫,先定義rownum變數,再新增行號。
參考: