在运行sql查询时

时间:2016-02-24 21:56:09

标签: mysql sql mysqli

您好我必须在运行时创建一个列(RANK of salary),这取决于一个表(COLLAGE)中的salary列的值,并且该salary与employee表相关联。你能建议如何生成它。 RANK列将包含基于工资的值,即如果工资高于RANK是1 ...按升序排列。

1 个答案:

答案 0 :(得分:0)

这可以让你获得你的员工,他们的薪水和职级栏目。

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子句对输出进行排序来维持此排名的正确排序。