mysql在select中选择一个值

时间:2012-07-14 10:22:06

标签: mysql sql select

我有一个实现消息系统。 我的问题是,我想知道一个用户是否已经有一个与另一个用户的线程,如果是,那么中间是什么

我有一个message_recips表,看起来像这样

---------------------------     
| mid | seq | uid | status|
|--------------------------
| 4   | 1   | 1   | A     |
| 4   | 1   | 2   | A     |
---------------------------

如果用户id 1具有用户ID为2的线程,则我保持2行具有相同的mid。 我知道我可以创建2平方英寸来实现我的要求,但我试图在1 sql中完成。

2 个答案:

答案 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 ) ) ;