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