MySQL自定義變數處理行號問題
今天遇到一個業務性很強的問題。
應該不是很通用。
實驗資料初始化:
Priority欄位是編輯手工填上去的,很有可能是重複的。
業務的需求是先根據Priority排序,然後在根據id排序,對結果生成一個順序連續的行號,然後更新到Priority欄位。
處理的SQL如下:
透過自定義變數,給排序的結果附加一個行號列,然後透過id更新源表。
更新後的結果已經符合業務的要求了。
如果是Oracle資料庫,這個就簡單多了。
應該不是很通用。
實驗資料初始化:
-
create table test
-
(
-
id int primary key ,
-
Priority int not null
-
);
-
-
insert into test values(30,1),(31,1),(32,1),(33,2),(34,3),(35,4),(36,4),(37,5),(38,5);
- commit;
Priority欄位是編輯手工填上去的,很有可能是重複的。
業務的需求是先根據Priority排序,然後在根據id排序,對結果生成一個順序連續的行號,然後更新到Priority欄位。
處理的SQL如下:
-
UPDATE (SELECT @a := @a + 1 AS rn, id
-
FROM test, (SELECT @a := 0
-
) t
-
ORDER BY Priority, id
-
) t1, test t2
-
SET t2.Priority = t1.rn
- WHERE t2.id = t1.id;
更新後的結果已經符合業務的要求了。
如果是Oracle資料庫,這個就簡單多了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-1220458/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL自定義變數執行順序MySql變數
- MySQL 處理行號MySql
- mysql中自定義變數有哪些MySql變數
- MySQL行號問題MySql
- MySQL自定義變數的三個小技巧MySql變數
- 【問題處理】使用trim和 replace處理字串中的換行符號字串符號
- Android自定義TitleBar 自定義標題欄 並進行事件處理Android事件
- mysql的處理能力問題MySql
- mysql問題處理兩則MySql
- mysql 問題處理二則MySql
- MySQL使用自定義變數模擬分析函式MySql變數函式
- Nginx 如何自定義變數?Nginx變數
- 語音訊號處理獲取 NFFT 的自定義函式音訊FFT函式
- Linux每程式執行緒數問題處理Linux執行緒
- MySQL:亂碼問題處理流程MySql
- mysql的處理能力問題(2)MySql
- MySQL OOM問題處理一則MySqlOOM
- Siri自定義Intent以及處理Intent
- 自定義事件相容處理物件事件物件
- PHP 後臺處理 JSON_encode 引數有空格,JS 輸出變 空格 變 + (加號)問題PHPJSON
- CSS 自定義屬性(變數)CSS變數
- mysql常用語句及問題處理MySql
- 【Django】DRF自定義異常處理Django
- 自定義處理頁面請求
- ORACLE未繫結變數和硬解析過多問題處理Oracle變數
- escape函式處理帶加號字串問題函式字串
- android自定義Application全域性變數不能型別轉換的問題AndroidAPP變數型別
- 使用 CSS 自定義屬性(變數)CSS變數
- js在函式中未定義的變數的處理JS函式變數
- 【問題處理】MySQL忘記root密碼的處理辦法MySql密碼
- mysql5.7安裝及問題處理MySql
- 對 echo 框架進行統一的自定義錯誤處理框架
- [系列] Gin框架 - 自定義錯誤處理框架
- 自定義Toast及視窗透明處理AST
- 前處理器變數變數
- sysdate返回值不變的問題處理
- 訊號處理基本引數
- jmeter問題處理隨筆1 - CSV取值資料異常處理(包含"號,","號的情況)JMeter