1. 程式人生 > >mysql查詢的結果表中在新增一列作為排序使用 @row_num

mysql查詢的結果表中在新增一列作為排序使用 @row_num


// 在結果表後在加一列遞增一 作為排名使用
		// 為了分頁的時候排名是在整體資料上進行排序而不是每一頁都是從1開始這個 @row_num應該是動態的 #{offset} 和limt #{offset} 一致
SET @row_num = 11;

// 由於查詢的條件中有group BY 排序sort如果在裡面的話會亂序 所以要在結果上進行新增 sort SELECT
	result.*, @row_num := @row_num + 1 AS sort
FROM
	( //普通的資料查詢結果
		SELECT
			ui.user_id,
			ui.img,
			ui.nick_name,
			ui.sex,
			sum(ugal.numbers) giftCount
		FROM
			user_give_away_log ugal
		LEFT JOIN user_info ui ON ugal.user_id = ui.user_id
		WHERE
			ugal.is_type = 2
		AND ui.statues = 1
		AND ui.del = 1
		GROUP BY
			ugal.user_id
		ORDER BY
			giftCount DESC,
			CONVERT (ui.user_id, CHAR)
	) AS result // 分頁要在結果之外 否則每頁排名都是從1開始
LIMIT #{offset}, #{limit}