嗨,我必须在运行时创建一列(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/