2017-04-21 19 views
0

我需要对数据库中的匹配进行计数。MySQL将两行作为一个行计算

输入:

id_to id_from 
1  2 
2  1 
1  3 
3  1 
1  4 
5  1 

第5和第6行只是一个方向,不计

样本输出:

id_match 
1  
2 
3 

因此,对于1(隐含的),2 3有反向匹配,但4和5没有。

---- ---- EDITED

假设表名是 “榜样”,我想ID的所有匹配= 1,则SQL查询将是:

SELECT count(*) FROM 
(SELECT id_to FROM example WHERE id_from = 1) as t1, 
(SELECT id_from FROM example WHERE id_to = 1) as t2 
WHERE t1.id_to = t2.id_from 

但也许有更好的方式来做到这一点

+0

用id_to试着用查询 –

+0

@Leonardo这个问题对我来说还不是很清楚。你的表名是什么? –

+0

“id_to”和“id_from”的值总是不一样,或者你也可以有'id_to = 1,id_from = 1'? –

回答

0

你可以尝试

SELECT DISTINCT id_from AS matched_id 
FROM your_table AS data1 
WHERE EXISTS (SELECT 1 
       FROM your_table AS data2 
       WHERE data1.id_from = data2.id_to 
         AND data1.id_to = data2.id_from) 

我已经创建了一个演示here

+0

Thanks!这不是我所需要的,但它会返回至少有一个匹配的ALL ID,非常有趣 –