我想获取所有创建或更新帖子或/和文章的活跃用户
user(id,...)
post(id, created_by_id, updated_by_id, ...)
article(id, created_by_id, updated_by_id, ...)
我想我找到了一个有效的 SQL 请求:
select u.id, u.firstname, u.lastname
from user u, article a, post p
where u.is_active = true and (u.id = a.created_by_id or u.id = p.created_by_id or u.id = a.updated_by_id or u.id = p.updated_by_id)
group by u.id
是否可以添加一个虚拟字段来说明用户是否处于事件状态或者他是否创建或更新了内容(文章或帖子)?像那样:
id - firstname - lastname - status
1 - John - Doe - active
2 - Bob - One - has content
3 - Alice - Twotwo - has content
4 - Luke - Sky - active
对此的要求是什么?
最佳答案
这可以通过 case 语句实现。
SELECT u.id, u.firstname, u.lastname,
CASE WHEN a.created_by_id is null && a.updated_by_id is null && p.created_by_id is null && p.updated_by_id is null THEN 'active'
ELSE 'has content'
END as 'status'
FROM User u
LEFT JOIN post p ON u.id = p.created_by_id OR u.id = p.updated_by_id
LEFT JOIN article a ON u.id = a.created_by_id OR u.id = a.updated_by_id
WHERE u.is_active = 1
ORDER BY u.id
关于mysql - 活跃且有帖子或文章的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54437092/