と の 2 つのテーブルがuserありprojects、2 つのテーブルは 1 対多の関係にあります。
projectsテーブルにはstatus、ユーザーのプロジェクト ステータスのフィールドがあります。
status次のいずれかになります。
launched, confirm, staffed, overdue, complete, failed, ended
ユーザーを次の 2 つのカテゴリに分類したいと考えています。
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満たしているため、2 回記録されます。
launchedステータスのプロジェクトを持つユーザーが自分のuser_categoryセットを に取得するクエリを提案してください1。に対して同じユーザーを繰り返さないでくださいuser_category 2。