获取具有共同 parents 的所有行

get all rows having common parents

id  parent_id child_id
1    1               1
2    2               2
3    2               2
4    1               1

我有一个 table,当我使用 id 查询数据时,我需要从中获取公共值...例如,如果 id=2 和 id=3,则 return

id  parent_id
2    2
3    2

我在通过各种示例进行了大量搜索后尝试了这个:

SELECT ta.user_id,ta.interest_parent_id,ta.interest_child_id 
       FROM user_interest ta 
       WHERE ta.user_id=2 AND 
       (SELECT COUNT(*) FROM user_interest tb 
            WHERE ta.interest_parent_id=tb.interest_parent_id
            AND tb.user_id=3 )>1 

但它只响应:

id  parent_id
2    2

任何帮助:(我正在使用 mysql 数据库和 php/codeigniter 来编写脚本

你可以做一个子SELECT:

SELECT * FROM table WHERE Name IN (SELECT Name FROM table GROUP BY Name HAVING count(*) > 1)

你可以试试看:

SELECT 
tOne.id,
tOne.parent_id
FROM 
(
    SELECT 
    *
    FROM user_interest A 
    WHERE A.id IN (2,3) 
) tOne
INNER JOIN 

(
    SELECT 
    *
    FROM user_interest A 
    WHERE A.id IN (2,3) 

) tTwo
ON tOne.parent_id = tTwo.parent_id
AND tOne.id <> tTwo.id
ORDER BY tOne.parent_id;

SQL FIDDLE DEMO

欢迎提出优化查询的任何建议。

编辑SQL FIDDLE