gpt4 book ai didi

php - 如何构造此查询以首先显示所需的行,然后显示其余行?

转载 作者:行者123 更新时间:2023-11-29 13:01:32 27 4
gpt4 key购买 nike

在我的页面中,我根据用户选择联系的选择时间范围显示一些条目,并将其保存到 mySQL 中。

我有 4 个时间范围组(我们的工作时间 09:00-17:00)供用户选择

09:00 - 11:00
11:00 - 13:00
13:00 - 15:00
15:00 - 17:00

目前,我显示的结果如下,按所选时间排序

$sql = "SELECT * FROM table order by chosenTime asc";

我想做的是根据当前时间对结果进行排序。

例如,如果时间为 10:30,则首先显示所选时间在 09:00-11:00 之间的行。如果是 11:00,则首先显示 11:00 - 13:00 的结果。

我正在考虑两者之间的选择,但我不知道如何继续。

--到目前为止我做了什么--

我的“肮脏”尝试是这样的。由于格式的原因很难比较这些数据,所以我创建了一个类似的时间

 $current = date("Hi", strtotime('+3 hours'));

所以这给了我1330

在此之后

if  ($current < "1059")  { 

show the results in the default way, chosenTime asc

} else
if (($current >"1100") && ($current < "1259")) {

show the results starting with the ones that chosenTime="11:00 - 13:00" and then
continue to the 13-15, 15-17, 09-11

} else
if (($current >"1300") && ($current < "1459")) {

this follows the above example starting with chosenTime="13:00 - 15:00"

} else
if (($current >"1500") && ($current < "1659")) {

this follows the above example starting with chosenTime="15:00 - 17:00"

}

问题是如何构造该查询?

最佳答案

$current 值的 order by 中使用 case when 子句并决定列的排序顺序。

SELECT * FROM table 
order by
case when '$current' < 1100 then 0 -- default order
when '$current' between 1100 and 1300 then 1 -- 09:00 - 11:00
when '$current' between 1301 and 1500 then 2 -- 11:00 - 13:00
when '$current' between 1501 and 1700 then 3 -- 13:00 - 15:00
when '$current' between 1701 and 1900 then 4 -- 15:00 - 17:00
end

关于php - 如何构造此查询以首先显示所需的行,然后显示其余行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23266450/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com