我必须根据unix时间字段对MySQL记录进行排序。但是,某些记录的值为1而不是时间。假设当前时间为125:
,这就是我希望它们排序的方式127
130
132
133
1
1
1
1
124
122
119
正如您所看到的,顶部是按时间字段的ASC顺序记录,最早的时间是最早的,然后是所有标记为1而不是正确时间的记录,然后记录来自以DESC顺序过去。这可行吗?
答案 0 :(得分:2)
您可以使用以下代码执行此操作:
drop table if exists numbers;
create table numbers ( value int );
insert into numbers values
(119),(122),(124),(127),(130),(131),(1),(1),(1),(1);
select
value
from numbers
order by if( value = 1, 125, if( value > 125, 99999 - value, value ) ) desc
产生:
value
-----
127
130
131
1
1
1
1
124
122
119
Jus用当前时间替换所有出现的125
和'99999'具有您在表中可能遇到的最大时间值。
答案 1 :(得分:0)
不确定一个mysql查询,但我已尝试过php和mysql两者,所以试试这个希望它可以帮到你
假设表名为测试,字段名称为日期和时间为125
$get_latest = mysql_query("SELECT * FROM `test` WHERE time > 125 ORDER BY time ASC");
while($row = mysql_fetch_assoc($get_latest))
{
$result[] = $row['time'];
}
$get_remaining = mysql_query("SELECT * FROM `test` WHERE time <= 125 ORDER BY time ASC");
while($row1 = mysql_fetch_assoc($get_remaining))
{
$result[] = $row1['time'];
}
foreach($result as $r)
{
echo $r.'<br />';
}