我有兩個表:user
和projects
,兩者之間有一對多的關係。
projects
表的字段status
包含用戶的項目狀態。PostgreSQL查詢返回多行而不是一個
status
可以是一個:
launched, confirm, staffed, overdue, complete, failed, ended
我想在兩個類別來分類用戶:具有項目
- 用戶
launched
階段 - 用戶具有比
launched
狀態等項目。
我使用下面的查詢:
SELECT DISTINCT(u.*), CASE
WHEN p.status = 'LAUNCHED' THEN 1
ELSE 2
END as user_category
FROM users u
LEFT JOIN projects p ON p.user_id = u.id
WHERE (LOWER(u.username) like '%%%'
OR LOWER(u.personal_intro) like '%%%'
OR LOWER(u.location) like '%%%'
OR u.account_status != 'DELETED'
AND system_role=10 AND u.account_status ='ACTIVE')
ORDER BY set_order, u.page_hits DESC
LIMIT 10
OFFSET 0
我面對重複記錄用於以下情形:
如果用戶具有狀態launched
以及overdue
,complete
或failed
項目,那麼該用戶被記錄兩次,因爲CASE
中的條件都滿足該用戶。
請建議查詢,其中有launched
狀態的任何項目的用戶將其user_category
設置爲1
。 user_category 2
不應該重複相同的用戶。
'distinct'是**不**的功能。 –