在MySQL中选择匹配/相互记录

时间:2011-03-31 19:30:59

标签: mysql

好的,这有点难以解释,但可以很容易实现。

我有一个具有以下结构的表:

`match_id` int(69) NOT NULL auto_increment,
`event_id` int(6) NOT NULL,
`users_id` int(6) NOT NULL,
`matches` int(6) default NULL

所以这是一个数据样本

33      11      54      1221
32      11      54      21
31      11      21      54
30      11      43      54

所以,在英语中,这是需要发生的事情: 这是一个个人选择图表,其中user1选择user2,反之亦然。我只需要相互选择的USERS_ID。 如果我正在寻找匹配= 54,我需要得到users_id = 21。因为54匹配21和21匹配54。

有关如何为此编写SQL语句的任何想法? 非常感谢。 布鲁诺。

3 个答案:

答案 0 :(得分:2)

试试这个:

SELECT DISTINCT a.user_id
  FROM <YOUR_TABLE> a INNER JOIN <YOUR_TABLE> b
    ON a.matches = b.users_id
   AND b.matches = a.users_id
 WHERE a.matches = 54

答案 1 :(得分:1)

select u1.user_id, u2.user_id
from t u1, z u2
where u1.matches = u2.user_id and u2.matches = u1.user_id

你仍然会得到2排54,21和21,54

答案 2 :(得分:0)

SELECT `tn1`.`users_id` from `TableName` `tn1`
JOIN `TableName` `tn2` ON `tn1`.`matches` = `tn2`.`users_id`
AND `tn2`.`users_id` = `tn1`.`matches`

其中 TableName - 表格的名称