我有一个实现消息系统。 我的问题是,我想知道一个用户是否已经有一个与另一个用户的线程,如果是,那么中间是什么
我有一个message_recips表,看起来像这样
---------------------------
| mid | seq | uid | status|
|--------------------------
| 4 | 1 | 1 | A |
| 4 | 1 | 2 | A |
---------------------------
如果用户id 1具有用户ID为2的线程,则我保持2行具有相同的mid。 我知道我可以创建2平方英寸来实现我的要求,但我试图在1 sql中完成。
答案 0 :(得分:1)
如Waqar Janjua所述,关键是自连接查询:
SELECT m1.mid
FROM messages_recips AS m1
JOIN messages_recips AS m2 ON m1.mid = m2.mid
WHERE m1.uid = 1
AND m2.uid = 2
答案 1 :(得分:0)
我认为你必须写一个自连接查询:
Select u.uid, u1.uid from tablename u
INNER JOIN tablename u1 on u.mid = u1.mid
您将获得具有相同中期的所有用户。
为了只获取user1和user2记录,你必须在查询结尾处放置一个where子句。
Select u.uid, u1.uid from tablename u
INNER JOIN tablename u1 on u.mid = u1.mid
Where ( u.uid In ( 1,2 ) OR u1.uid In ( 1,2 ) ) ;