mysql - 活跃且有帖子或文章的用户

标签 mysql sql

我想获取所有创建或更新帖子或/和文章的活跃用户

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/

相关文章:

mysql - 由另一列分组的所有不同列值的总和?

SQlite 仅选择它们之间具有已定义差异的行

sql - Redshift FULL OUTER JOIN 不输出 NULL

sql - 是否可以通过密码保护 SQL Server 数据库,即使是服务器管理员?

sql - 将表的两列合并为一列

mysql - 在 Mysql 中使用 CASE 将值设置为别名字段

c# - 如何在 WPF 中刷新数据网格

mysql - 如何查找表中不存在的元素

mysql - 使用表达式查询选择大于

mysql - 如何解决这个特定的数据库SQL查询