在MYSQL中按打开时间订购存储
我的mySQL数据库中有一个表,如下所示:在MYSQL中按打开时间订购存储,mysql,group-by,sql-order-by,Mysql,Group By,Sql Order By,我的mySQL数据库中有一个表,如下所示: id | shop_id | day | open | close --------------------------------- 1 | 1 | 1 | 8 | 18 --------------------------------- 2 | 100 | 2 | 9 | 17 --------------------------------- 3 | 200 | 1 | 8 | 16
id | shop_id | day | open | close
---------------------------------
1 | 1 | 1 | 8 | 18
---------------------------------
2 | 100 | 2 | 9 | 17
---------------------------------
3 | 200 | 1 | 8 | 16
---------------------------------
4 | 220 | 4 | 10 | 17
以此类推,day
是int
在1-7之间,我想让aa选择
根据当前时间按当前打开的店铺排序结果。这个查询将被分页,所以选择所有行并在PHP中排序的想法是不正确的。有没有这样的查询方法:
set @time1 = '15:00';
select *
from tablename
order by
@time1 not between concat(lpad(open, 2, '0'), ':00') and concat(lpad(close, 2, '0'), ':00'),
lpad(open, 2, '0'),
id
当前时间为15:00,查询应返回顺序,如1、3、2、4,如果时间为17:00,则返回顺序为1、2、4、3。首先获取今天打开的店铺,然后是明天,依此类推……使用lpad()
和concat()
为列open
和close
创建可比时间,然后按如下顺序排序:
set @time1 = '15:00';
select *
from tablename
order by
@time1 not between concat(lpad(open, 2, '0'), ':00') and concat(lpad(close, 2, '0'), ':00'),
lpad(open, 2, '0'),
id
查看。
存储数据的方法非常糟糕。我认为这个问题——就像现在一样——属于每小时人数。com@Zeljka在你看来,我应该在什么样的模式下重新配置表,使之成为一种“好方法”?谢谢@forpas。看起来这就是我要找的