在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

我的mySQL数据库中有一个表,如下所示:

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。看起来这就是我要找的