1. 程式人生 > >mysql :=和=的區別及統計查詢結果行號

mysql :=和=的區別及統計查詢結果行號

變數初始化:@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變數,再新增行號。

參考:

https://blog.csdn.net/wangjun5159/article/details/51378558

https://blog.csdn.net/u012102536/article/details/59112054