检查用户是否匹配相同的选项

时间:2013-03-29 15:45:44

标签: mysql sql

所以这是我的表

|a_id|b_id|
|x   |y   |
|y   |x   |
|d   |c   |
|c   |d   |
|... |... |

更多......

获得所有配对的最佳方法是什么? 例如,从上面的例子 (x和y)和(d和c)

我从未使用过没有特定ID的SQL

3 个答案:

答案 0 :(得分:3)

select  t1.a_id
,       t1.b_id
from    YourTable t1
join    YourTable t2
on      t1.a_id = t2.b_id
        and t1.b_id = t2.a_id
where   t1.a_id > t2.a_id

Example on SQL Fiddle.

答案 1 :(得分:2)

SELECT a_id, b_id
FROM   TableName
WHERE  (LEAST(a_id, b_id), GREATEST(a_id, b_id), a_id) in 
(
    SELECT  LEAST(a_id, b_id) as x, 
            GREATEST(a_id, b_id) as y, 
            MIN(a_id) as a_id
    FROM    TableName 
    GROUP   BY x, y
)

答案 2 :(得分:0)

可以更简单:

SELECT LEAST(a_id, b_id) AS a, GREATEST(a_id, b_id) AS b 
FROM   tbl
GROUP  BY 1, 2;

SQL Fiddle