【发布时间】:2019-01-08 18:50:09
【问题描述】:
假设我有一张表Employees 与列id、name、salary 和manager_id
另一个表fields 的列field 可以是Employees 表中的任何字段。
如何按fields 表中的行对员工进行排序?
例如:当fields包含值'salary', 'manager_id'时,员工将按salary排序,然后按manager_id排序。
我尝试了类似的方法,但没有成功:
SELECT * FROM employees ORDER BY (SELECT field FROM fields)
编辑:最初的问题是我目标的简化示例。 我希望员工按他们的超级经理 id 排序,然后按第二个超级经理 id...最后按他们的直接经理的 id。
给定员工(id、姓名、薪水、manager_id):
1 亚历克斯 1000 NULL
2 莫尔 2000 1
3 约翰 3000 NULL
4 克里斯 4000 1
5 迈克尔 5000 4
6 哑光 6000 2
查询结果为:
1 亚历克斯 1000 NULL
2 莫尔 2000 1
6 哑光 6000 2
4 克里斯 4000 1
5 迈克尔 5000 4
3 约翰 3000 NULL
【问题讨论】:
-
@semicolon 这是不正确的,你觉得这个连接应该是什么样子?表字段包含字段名称
-
添加一些示例表数据和预期结果 - 作为格式化文本(不是图像)。
-
@Livius 问题已编辑发表评论。现在我明白了。
-
@semicolon 好的,这是一个活生生的问题 ;-)。
sitoNz- 问题很有趣,但你的设计好吗?我从来没有这样的问题,我想我们大多数人。将这些排序信息存储在表中的目的是什么? -
如果 PostgreSQL 中有任何功能可以将行转换为列(如 SQL Server 中),那么您可以使用它。
标签: sql postgresql