Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 排序多列_Mysql_Sql - Fatal编程技术网

Mysql 排序多列

Mysql 排序多列,mysql,sql,Mysql,Sql,我有一个表msg(ID,TO,FROM,msg,TIME),我需要从TO和FROM中选择不同的元组,并根据最近发送消息的时间对结果排序。我使用了这么多的查询 SELECT DISTINCT value FROM ( SELECT msg.to AS value, time FROM msg WHERE msg.from = '".$_SESSION["username"]."' UNION SELECT msg.from AS v

我有一个表msg(ID,TO,FROM,msg,TIME),我需要从TO和FROM中选择不同的元组,并根据最近发送消息的时间对结果排序。我使用了这么多的查询

SELECT DISTINCT value 
FROM ( SELECT msg.to AS value, time 
        FROM msg 
        WHERE msg.from = '".$_SESSION["username"]."' 
    UNION 
        SELECT msg.from AS value, time 
        FROM msg 
        WHERE msg.to = '".$_SESSION["username"]."') TT 
order by time desc

但是没有一个能给出预期的结果。

什么是“期望的结果”?它与下面的有什么不同

select TO, FROM, max(TIME) as TIME
from msg
group by TO, FROM
order by max(TIME) desc

如果你喜欢,考虑下面简单的两步行动:1。如果您还没有这样做,请提供适当的DDL(和/或SQLFIDLE),以便我们可以更轻松地复制问题。2.如果尚未这样做,请提供与步骤1中提供的信息相对应的所需结果集。有关如何获取每个组中最后一次的行,请参阅。然后按时间顺序排列结果。
select TO, FROM, max(TIME) as TIME
from msg
group by TO, FROM
order by max(TIME) desc
SELECT value, max(time) as latest_time_sent
FROM ( SELECT msg.to AS value, time 
        FROM msg 
        WHERE msg.from = '".$_SESSION["username"]."' 
    UNION ALL
        SELECT msg.from AS value, time 
        FROM msg 
        WHERE msg.to = '".$_SESSION["username"]."') TT 
group by value
order by latest_time_sent desc