嗨,我必须在运行时创建一列(salk的兰克),这取决于一个表(COLLAGE)中的salary列的值,并且此salary与employee表相关联。你能建议如何生成它吗? RANK列将包含基于薪水的值,即,如果薪水最高比RANK为1 ...升序。

最佳答案

这将为您提供您的员工编号,他们的薪水和等级列。

SELECT
    *,
    @currentRank := @currentRank + 1 AS rank_of_salary
FROM (
    SELECT
        c.employee_id,
        e.salary
    FROM
        collage c
        INNER JOIN employee e ON c.employee_id = e.employee_id
    ) t, (SELECT @currentRank := 0) r
ORDER BY salary


(SELECT @currentRank := 0)初始化变量,因此您不需要单独的SET语句。

对于每一行,都会增加@currentRank变量并将其存储在rank_of_salary列中。我相信实际上更像是一个row_number等效项。通过使用ORDER BY salary子句对输出进行排序,可以维护该等级的正确排序。

关于mysql - 在运行SQL查询时在运行时创建列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35613987/

10-14 13:45