我有两个表:user
和projects
,两者之间存在一对多的关系。
projects
表具有status
包含用户项目状态的字段。
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
。