好的,这有点难以解释,但可以很容易实现。
我有一个具有以下结构的表:
`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语句的任何想法? 非常感谢。 布鲁诺。
答案 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 - 表格的名称