在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);