【发布时间】:2011-10-01 13:51:21
【问题描述】:
每个帐户都与一个人和一种帐户相关联。我想选择一个不同的帐户子集。为了被选中,帐户至少满足两个标准之一。如果一个帐户出现两次
我想根据两个不同的字段对该结果集进行排序。这是我的尝试:
Select DISTINCT a.*
FROM people AS p
JOIN accounts AS a
ON a.people_id = p.id
JOIN type_account AS t
ON t.type_id = a.id
WHERE t.id IN(1,3,5)
OR p.id IN(2,4,6)
ORDER BY(CASE
WHEN p.id IN(2,4,6) THEN p.updated_at
WHEN t.id IN(1,3,5) THEN p.created_at) AS position
我收到了这个错误:SELECT DISTINCT, ORDER BY expressions must appear in select list
如果我将 case 语句移到 select 中,则一个帐户(与不同的人相关联)可能会出现在结果中两次,即在满足第一个 where 子句时出现一次,在满足第二个 where 子句时出现两次。在这种情况下,帐户将在结果集中出现两次。
我很难理解这个问题。任何帮助将不胜感激:)
【问题讨论】:
标签: sql postgresql join distinct case