我有一个名为users的表,它有两列,id和last_activity,
目前,我这样做是为了让所有在线用户
SELECT * FROM users WHERE last_activity + 300 > NOW();
这样做是为了让离线用户
SELECT * FROM users WHERE last_activity + 300 < NOW();
然后将结果组合在一起显示在具有特定图标(绿色或红色)的页面上,具体取决于状态。
如何在飞行中添加一个列,例如(is_online),此列应该与每一行相关联,因此我可以得到类似下面的内容。所以我可以在一个查询中结合上述两个查询,并能够在以后区分用户的状态吗?
id | is_online
1337 | 1
1334 | 1
XXXX | 0
列is_online实际上并不存在于表中,我想动态创建它并给它值1如果last_activity + 300&gt; NOW()否则给它值0
答案 0 :(得分:4)
MySQL将布尔表达式视为整数。你可以这样做:
SELECT u.*, (last_activity + 300 > NOW()) as is_online
FROM users u;
答案 1 :(得分:3)
您可以尝试使用单个查询来获取所需的结果以及您想要使用CASE的其他列
SELECT Id,
CASE
WHEN last_activity + 300 > NOW() THEN 1
ELSE 0
END as Is_Online
FROM Users