我有一张表格如下:
+-------------+--------+------------+
| Employee ID | Salary | Grievances |
+-------------+--------+------------+
| 101 | 70,000 | 12 |
| 102 | 90,000 | 100 |
| ... | ... | ... |
+-------------+--------+------------+
我想找到所有在排名前十位工资的员工,但排在前五位表示不满。我(我想)知道如何使用ROW_NUMBER
在SQL Server中执行此操作,但如何在MySQL中执行此操作?我已经看到goto question这样做了,但它并不适用于多列排序。
答案 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);
}
}