我需要计算数据库中的匹配项。
输入:
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 则没有。
---- 已编辑 ----
假设表名是“example”,我想获取 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
但也许有更好的方法
最佳答案
你可以试试
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
关于MySQL 将两行算作一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43532772/