之前有乙個給商戶的員工進行排序的需求,結果我沒有按照商戶進行設定排序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.首先定義...