Sql 按两个别名之一排序(对于同一表的关系)
我有用户和项目的表格 项目包括:Sql 按两个别名之一排序(对于同一表的关系),sql,database,postgresql,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
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和order by,结果是相同的。我的结果按第一个profiles.name JOIN(project\u managers.name)排序
我如何才能按项目经理的姓名或业务经理的姓名正确订购?这是您想要的吗
order by coalesce(project_managers.name, business_manager.name)
您正在使用left join
,因此这假设其中一个值为NULL
这是您想要的吗
order by coalesce(project_managers.name, business_manager.name)
您使用的是
left join
,因此这假设其中一个值为NULL
类似的方法可以工作
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
像这样的东西会有用的
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
我从来没有两个人同时下过命令我从来没有两个人同时下过命令你的解决方案清除了我的视线,用别名做了一个投影,它成功了!谢谢你,你的解决方案清除了我的视线,用别名做了一个投影,效果很好!非常感谢。