Mysql分組給字段設定序號進行排序

2021-08-28 07:22:31 字數 1489 閱讀 6433

之前有乙個給商戶的員工進行排序的需求,結果我沒有按照商戶進行設定排序sort值,後面所有的商戶的員工的sort值都混在一起了,只能寫資料庫指令碼來進行糾正

首先有乙個樣表,結構如下:

特意將sort打亂來模擬場景, 現在需要按照name分組,使sort在每一組name中是從0開始有序的數

;執行sql

但是這裡還沒完, 當我拿到開發資料庫測試的時候,發現每一組數字都是從1開始的 (此處貼的仍然的樣表的測試圖)

後面仔細檢查,發現一開始自己樣表,是根據d.name(varchar) 來分組的, 開發資料庫是根據商戶編號mcht_no(bigint) (default = 0)來分組的, 也就是乙個是字串型別,乙個數字型別. 並且數字型別預設為0, 也就是

@a=0

case

when

@a= d.`no

`

應該是這裡的問題, 導致每一組都加了1, 從1開始

最後解決方法: 後面加乙個-1

set@c=

0;set@a=0

;update tb_desc d

set d.

`sort`=(

select

case

when

@a= d.`no

`then

@c :=@c+

1else

(@c :=@c+

1and

@a := d.`no

`)end)-1

order

by d.`no

`;

Mysql分組查詢加上序號

今天老闆讓我刪除資料庫中多餘的資料 要求 每個使用者只保留當天的前四條記錄 最開始只是用userid進行了分組 但是怎麼再用時間進行分組呢 最開始我實在when後面加上and條件 但是發現結果不對 刪掉之後就可以了 select id from select r case when type a.u...

mysql分組排序加序號

參照 一 需求 新加乙個sort 字段,初始值為1,按照parentid分組新增sort值。根據原資料的parentid,postime排序,不同parentid值,sort 值從1開始重新增加 二 實現 1 update co test ast12 set sort 3 select 4t2.i ...

mysql給列加序號

select row id row id 1 as id,a.america from select name as america from student where continent america order by america asc a select row id 0 b1.首先定義...