Php 如何从下表中选择不同的行
我想从SentBy和SentTo的组合中选择最大ID 我的意思是我想把1-3和3-1组合在一起。。相似1-2和2-1也应分组在一起 问题是什么 用户:Php 如何从下表中选择不同的行,php,mysql,Php,Mysql,我想从SentBy和SentTo的组合中选择最大ID 我的意思是我想把1-3和3-1组合在一起。。相似1-2和2-1也应分组在一起 问题是什么 用户: **ID | Name** 1 | A 2 | B 3 | C 4 | D 聊天 ID | Msg | SentBy (Users.ID) | SentTo (Users.ID) 1 | abc | 1 | 2 2 | def | 1 | 3 3 | ghi | 1 | 4 4 | jkl | 2 | 1 5 | mno
**ID | Name**
1 | A
2 | B
3 | C
4 | D
聊天
ID | Msg | SentBy (Users.ID) | SentTo (Users.ID)
1 | abc | 1 | 2
2 | def | 1 | 3
3 | ghi | 1 | 4
4 | jkl | 2 | 1
5 | mno| 2 | 1
6 | pqr | 3 | 1
7 | stu | 3 | 1
8 | vwx| 4 | 1
9 | yz | 4 | 1
10| def | 1 | 3
12| jkl | 2 | 1
必需的
ID | Msg | SentBy (Users.ID) | SentTo (Users.ID)
3 | ghi | 1 | 4
10| def | 1 | 3
12| jkl | 2 | 1
我想你在找这个
select max(id) from chat as c1
inner join chat as c2 on (c1.sent_by = c2.sent_to and c1.sent_to = c2_sent_by)
group by c1.sent_by, c1.sent_to ;
使用LEAST()
和magest()
SELECT Chat.*
FROM Chat
JOIN (
SELECT MAX(`ID`) m_value
FROM Chat
GROUP BY LEAST(`SentBy`, `SentTo`) , GREATEST(`SentBy`, `SentTo`)
) C
ON Chat.`ID` = C.m_value
输出
| ID | Msg | SentBy | SentTo |
|----|-----|--------|--------|
| 9 | yz | 4 | 1 |
| 10 | def | 1 | 3 |
| 12 | jkl | 2 | 1 |
你说的分组是什么意思?我的意思是1-3和3-1被视为一个组,你可以在上表中看到,我想获取每个1-2或2-11-3或3-11-4或4-1的最大ID,因为mno和jkl有sentBy SentTo 2-1,但mno有ID 5,jkl有ID 12请不要这么快,为什么你的解决方案会显示
(3,ghi)
,而不是(9,yz)
?不确定这是否会起作用,因为有几个(1,2)
和几个(2,1)
是的,它不起作用..起作用了!