今天写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";
但是不知道原因,帖出来给遇到类似问题的兄弟一个参考。
还有就是希望有牛人能够解答。^_^