sql - 按两个别名之一排序(对于同一个表的关系)

标签 sql database postgresql

我有表用户和项目。

项目有:

project_manager_id -> references users.id
business_manager_id -> references users.id

我必须通过其中一个来订购。所以,我的查询是:

select * from projects...
LEFT JOIN profiles project_managers ON project_managers.id = projects.project_manager_id
LEFT JOIN profiles business_managers ON business_managers.id = projects.project_manager_id
order by project_managers.name 

order by business_managers.name 

但是对于两个ord​​er by,结果是一样的。我的结果是按第一个 profiles.name JOIN (project_managers.name) 排序的。

如何通过 project_managers.name 或 business_manager.name 正确订购?

最佳答案

像这样的东西会起作用

select * from (
    select projects.id project_id 
    , project_managers.name project_managers_name
    , business_managers.name business_managers_name
    , ...
    from projects
    LEFT JOIN profiles project_managers 
    ON project_managers.id = projects.project_manager_id
    LEFT JOIN profiles business_managers 
    ON business_managers.id = projects.project_manager_id
) projects
order by project_managers_name 

关于sql - 按两个别名之一排序(对于同一个表的关系),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40312994/

相关文章:

sql - 如何过滤 where 子句中的复合键?

php - PDO 联合选择结果没有任何结果

c# - 编写可测试的 "import data from database"类

postgresql - 用于数据分析目的的特定 postgresql 服务器配置

Sql 从另一个表更新记录

database - 有没有支持分支的数据库?

database - 使用 noSQL 和 MongoDB 在数据库中存储任何类型的文件的最佳方法是什么

python - 如何使用 SQLAlchemy 在 Postgres 数据库中创建包含 UUID 列的表?

arrays - 将 PostgreSQL bigint 数组唯一值移动到另一个索引

sql - MySQL批量增加值?