MYSQL 通過SQL語句更新序列字段

使用背景

在開發之初在設計問卷問題表(question)時考慮到題號的沒有保存價值未對題號進行保存,在之後的需求調整後,又有了對問卷問題表(question)添加題號(number)字段的需求,故寫了以下語句對問卷問題表(question)舊數據題號(number)字段進行統一更新。

UPDATE question q
SET q.number = (SELECT a.rank
FROM
	 (
	SELECT
		q1.id,-- 問題編號
		q1.sort, -- 問題排序
		q1.paper_id, -- 關聯問卷編號
		-- 當上一條數據關聯問卷編號與當前一致時題號@rank加1,否則題號@rank重新從1開始計數
		CASE
			WHEN q1.paper_id = @paper_id THEN 
			@rank := @rank + 1 ELSE @rank := 1 
			END AS rank,
		-- 將當前數據的關聯問卷編號賦值給@paper_id
			@paper_id := q1.paper_id 
	FROM
		question q1,
		( SELECT @paper_id := '', @rank := 0 ) t 
	ORDER BY
		q1.paper_id,
		q1.sort 
	) a WHERE q.ID = a.ID)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章