简体   繁体   English

SQL条件取决于相同查询中的结果

[英]SQL condition depending on result in same query

I have this mySQL statement: 我有这个mySQL语句:

SELECT (SELECT COUNT(id) from online_users WHERE name='lol') as online, id, name, city
FROM players 
WHERE name='lol'
AND last_action < date_sub(now(), interval 1 hour)

however I want the last_action interval to vary; 但是我希望last_action间隔有所变化; 1 minute if online is 1, and 1 hour if online is 0 如果online为1,则为1分钟;如果online为0,则为1小时

Can this be done all in one query? 可以在一个查询中全部完成吗? How so? 怎么会这样?

SELECT (SELECT COUNT(id) from online_users WHERE name='lol') as online, id, name, city
FROM players 
WHERE name='lol'
AND last_action < date_sub(now(), interval 1 CASE WHEN online=0 THEN hour ELSE MINUTE END)

Try above code. 尝试上面的代码。

Hope this will help. 希望这会有所帮助。

You could use an OR condition, like this: 您可以使用OR条件,如下所示:

SELECT (SELECT COUNT(id) from online_users WHERE name='lol') as online, id, name, city
FROM players 
WHERE name='lol'
AND ((last_action < date_sub(now(), interval 1 hour) AND online = 1) OR (last_action < date_sub(now(), interval 1 minute) AND online = 0))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM