2
每個帳戶都與一個人和一種帳戶關聯。我想選擇一個不同的帳戶子集。爲了被選中,賬戶至少滿足兩個標準中的一個。如果一個帳戶發生兩次PostgreSQL:你如何根據WHERE子句選擇DISTINCT關係和按不同字段排序?
我想根據兩個不同的字段來訂購這個結果集。這是我的嘗試:
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語句的選擇有可能爲一個帳戶(與不同的人相關聯的)出現在結果的兩倍,即當第一個where子句被滿足時,一次,第二個where子句滿足時,兩次。在這種情況下,賬戶將在結果集中出現兩次。
我有困難纏繞在這一個頭上。任何幫助,將不勝感激:)
但有可能爲一個帳戶(與不同的人相關聯的)出現在結果兩次,即當第一個where子句被滿足時,一次,第二個where子句滿足時,兩次。在這種情況下,賬戶將在結果集中出現兩次。 – Spencer
所以,也許你想要一個子查詢?我很難完全掌握您的需求。 – Flimzy
我的要求是,我只希望結果集中有一個帳戶。 – Spencer