1

我有一个包含以下列和行的数据库

sender      receiver   timestamp
1           176        305
176         1          503
1           116        2011
45          1          106
1           176        309

好的。到目前为止,一切都很好。问题是,我希望将所有数据显示一次并按时间戳排序,所以我会得到这样的结果:

sender/receiver      timestamp
116                  2011
176                  503
45                   109

这意味着即使发送方/接收方发生不止一次,我也只会获得时间戳的最高值。

我真的希望你能理解我的问题。

4

2 回答 2

2
SELECT  CASE WHEN Sender = 1 THEN Receiver ELSE Sender END `sender/receiver`,
        MAX(timestamp) time_stamp
FROM    tableName
WHERE   1 IN (Sender, Receiver)
GROUP   BY CASE WHEN Sender = 1 THEN Receiver ELSE Sender END
ORDER   BY time_stamp DESC

CASE语句采用Receiveris the Sender = 1else的值Sender。的使用MAX()取时间戳的最大值。

于 2013-10-30T13:22:48.573 回答
0

另外的选择:

SELECT sender_receiver
     , Max(timestamp) As max_timestamp
FROM   (
        SELECT sender As sender_receiver
             , timestamp
        FROM   your_table
        WHERE  sender <> 1

        UNION ALL

        SELECT receiver As sender_receiver
             , timestamp
        FROM   your_table
        WHERE  receiver <> 1
       ) As x
ORDER
    BY max_timestamp
于 2013-10-30T13:28:43.170 回答