mysql 用行號rownum更新順序號字段


UPDATE customer
SET OrderNo = (
    SELECT
        afterOrder.rowNum
    FROM
        (
            SELECT
                @row_number := CASE
            WHEN @customer_no = s.DepartmentId THEN
                @row_number + 1
            ELSE
                1
            END AS rowNum,
            @customer_no := s.DepartmentId AS stu_DepartmentId,
            s.id
        FROM
            customer s,
            (
                SELECT
                    @row_number := 0,
                    @customer_no := '039c235a-2039-44b0-84b6-bb9586092b78'
            ) t
        ORDER BY
            s.DepartmentId,
            s.CreatedTime
        ) afterOrder
    WHERE
        afterOrder.id = customer.Id
);

mysql 用select后的值 更新表時千萬別用這種坑人的寫法

UPDATE customer
INNER JOIN (
    SELECT
        @row_number := CASE
    WHEN @customer_no = s.DepartmentId THEN
        @row_number + 1
    ELSE
        1
    END AS rowNum,
    @customer_no := s.DepartmentId AS stu_DepartmentId,
    s.id
FROM
    customer s,
    (
        SELECT
            @row_number := 0,
            @customer_no := '039c235a-2039-44b0-84b6-bb9586092b78'
    ) t
ORDER BY
    s.DepartmentId,
    s.CreatedTime
) afterOrder ON customer.id = afterOrder.id
SET customer.OrderNo = afterOrder.rowNum

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM