mysql查询

0tdrvxhp  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(312)

在stackoverflow中进行了一点搜索之后,我找到了我想要的查询,它是这样的:

SELECT * FROM workers where TIMESTAMPDIFF(SECOND, last_activity_time, NOW()) >= (60/per_hour*60)

每个记录由以下字段组成:

id   worker_name   last_activity_time   per_hour

因此,每个worker都有一个peru\ hour字段,它将被确定为每小时的操作数。
last activity是worker最后一次执行操作的时间。它将获得在当前时间运行的合格记录。
所以它将决定时间间隔 60/per_hour 以秒为单位,并选择从 last_activity_time 到目前为止还不止这个计算的时间间隔。
这没问题,但我想知道两件事。
1:这个查询是解决这个问题的好方法还是很慢?
2:这个查询怎么办 laravel 5.5 活动记录还是查询生成器?而且它应该一次返回一个记录。
提前谢谢

3ks5zfa0

3ks5zfa01#

这应该管用

\DB::table('workers')->whereRaw(...)->first();

https://laravel.com/docs/5.6/queries
1:这个查询是解决这个问题的好方法还是很慢?
这将取决于你有多少工人,你应该试试看

332nm8kg

332nm8kg2#

我认为你的查询很好,因为没有连接和子查询,只有条件存在。您可以在laravel上启动原始查询-

$workers = DB::select('SELECT * FROM workers where TIMESTAMPDIFF(SECOND, last_activity_time, NOW()) >= (60/per_hour*60)');
// or you can make use of query builder as follows
$workers = DB::table('workers')->whereRaw('TIMESTAMPDIFF(SECOND, last_activity_time, NOW()) >= (60/per_hour*60')->first();

相关问题