MySQL ROW_NUMBER用于多列

时间:2016-04-22 17:04:58

标签: mysql sql database row-number

我有一张表格如下:

+-------------+--------+------------+
| Employee ID | Salary | Grievances |
+-------------+--------+------------+
| 101         | 70,000 | 12         |
| 102         | 90,000 | 100        |
| ...         | ...    | ...        |
+-------------+--------+------------+

我想找到所有在排名前十位工资的员工,但排在前五位表示不满。我(我想)知道如何使用ROW_NUMBER在SQL Server中执行此操作,但如何在MySQL中执行此操作?我已经看到goto question这样做了,但它并不适用于多列排序。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,你可以通过自我加入来做到这一点:

var lookup = new ChildLookup(root);
...

class ChildLookup
{
    Dictionary<string, Node> nodes;

    public ChildLookup(Node node)
    {
        nodes = new Dictionary<string, Node>();
        AddNodes(node);
    }

    private void AddNodes(Node node)
    {
        nodes[node.Value] = node;
        foreach (var item in node.SubNodes)
            AddNodes(item);
    }

    public IEnumerable<string> GetChildren(string key)
    {
        if (!nodes.ContainsKey(key)) throw new KeyNotFoundException();

        return nodes[key].SubNodes.Select(c => c.Value);
    }
}