在mysql中分组两列

在mysql中分组两列,mysql,Mysql,我有问题吗? 我有一张桌子 sender_user_id receiver_user_id 2 3 3 2 2 7 2 8 7 3 10

我有问题吗? 我有一张桌子

    sender_user_id  receiver_user_id        
        2               3           
        3               2           
        2               7       
        2               8           
        7               3           
       10               6               
        2               3       
我还想按
sender\u user\u id
receiver\u user\u id
对列进行分组
(发送方id=2和接收方id=3)
(发送方id=3和接收方id=2)
应分组为一列,并带有
最大时间戳
不清楚您的意思。你想要像这样的东西吗

   group by sender_id, reciever_id
   order by timestamp desc
试试这个:

select max(timestamp) from yourTable group by sender_user_id, receiver_user_id

不确定是否可以通过组合两列对组执行此操作。你可以试试工会

SELECT user1,user2,MAX(timestamp) FROM 
(SELECT
  sender_user_id AS user1,
  receiver_user_id AS user2,
  timestamp
FROM table
) AS table1
UNION DISTINCT
(SELECT 
  receiver_user_id AS user1,
  sender_user_id AS user2,
  timestamp
FROM table) AS table2
GROUP BY user1,user2
试一试

按发送方\用户\ id、接收方\用户\ id从组中选择*,最大值(时间戳)

这就是你要找的吗

SELECT CONCAT(sender_user_id,' ', receiver_user_id ) as newcolumn, max(datestamp)
from temptable
group by CONCAT(sender_user_id,' ', receiver_user_id ) ;

尝试将GROUP BY作为子查询,然后执行CONCAT

SELECT
    CONCAT(sender_user_id,' ',receiver_user_id) sender_receiver,
    max_datestamp
FROM
(
    SELECT sender_user_id,receiver_user_id, max(datestamp) max_datestamp
    FROM temptable GROUP BY sender_user_id,receiver_user_id
) A; 
请确保已正确索引了Tentable

ALTER TABLE temptable ADD INDEX sender_receiver_ndx (sender_user_id,receiver_user_id);

我有一个发送者id=2、接收者id=3的条目,还有一个发送者id=3、接收者id=2的条目,所以应该将其分组到一列中
ALTER TABLE temptable ADD INDEX sender_receiver_ndx (sender_user_id,receiver_user_id);