ก๊วนซอฟท์แวร์ </softganz> SoftGang (Gang Software)

Web &amp; Software Developer Gang.

Update table with incremented value grouped by column

by Little Bear @4 พ.ค. 60 21:43 ( IP : 223...160 ) | Tags : MySQL

ต้องการให้สร้างลำดับของ sorder ของข้อมูลในกลุ่มที่มีค่า tpid เดียวกัน โดยเริ่มนับ sorder จาก 1 เป็นต้นไป และเริ่มนับ 1 ใหม่เมื่อเปลี่ยนค่า tpid

SET @id := null, @no := null;
UPDATE `jobtr`
SET
    sorder = IF(tpid = @id, @no := @no+1, @no := 1),
    tpid = (@id := tpid)
ORDER BY tpid, sorder, jobtrid;

หากไม่ต้องเริ่มต้น group

SET @no = 0;
UPDATE users SET uid = @no := @no+1 ORDER BY uid ASC;

ฟิลด์คุมมีมากกว่า 1 ฟิลด์

SET @org := null, @psn := null, @no := null;
UPDATE test SET collectionNo=NULL WHERE formName = "DRUG";
UPDATE test
SET
    collectionNo = IF(orgId = @org && psnId = @psn, @no := @no+1, @no := 1)
    , orgId = (@org := orgId)
    , psnId = (@psn := psnId)
WHERE formName = "DRUG"
ORDER BY orgId, psnId, autoId;