繁体   English   中英

在postgres中按连接表排序行

[英]Ordering rows by joined tables in postgres

我甚至没有想出正确的问题标题。 我会采取任何建议来编辑它。

我的问题:我有一个应用程序(工作板)有两个模型: 用户工作 用户可以有很多工作,工作可以是premiumfree 作业也可以过期活动 如果valid_until参数IS NOT NULL ,它们是活动的,否则它们已过期(我有一个后台作业,每天自动设置它)。

我正在尝试选择具有活动作业的用户但是我希望拥有高级作业的用户来到具有免费作业的用户之前,假设用户可以同时激活高级和免费作业发布。

SELECT DISTINCT users.id, users.email FROM users
LEFT OUTER JOIN jobs ON jobs.owner_id = users.id
WHERE jobs.valid_until IS NOT NULL;

以上查询正确选择具有至少一个活动作业(高级或免费)的用户,我只需要根据作业表订购用户。 我将不胜感激任何帮助/提示。 谢谢!

我相信以下会做你想要的:

SELECT users.id, users.email FROM users
JOIN jobs ON jobs.owner_id = users.id
WHERE jobs.valid_until IS NOT NULL
GROUP BY users.id, users.email
ORDER BY min(case when jobs.type = 'premium' then 1 else 2 end)

我看不到拥有Premium vs Free的领域的名字,所以我做了一个! 此外,我将您的JOIN更改为INNER JOIN因为WHERE子句在任何情况下都具有该效果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM