今天写mysql数据库代码的时候,发现union的结果不是预期的

$stime = date("H:i:s");
$sql1 = "select * from T where '$stime'>stime order by stime desc";
$sql2 = "select * from T where stime>'$stime' order by stime asc";
$sql = "($sql) union all ($sql2)";

分别执行$sql1 和 $sql2 的时候结果是对的

但是执行$sql的时候,发现结果反了,$sql1的部分变升序,$sql2的部分变成降序

搜索也没有得到满意的答案,好像有些数据库还是不支持字句order by 的

无意中发现这样可以

$sql = "select * from ($sql1) as temp1 union all select * from ($sql2) as temp2";

但是不知道原因,帖出来给遇到类似问题的兄弟一个参考。