获取具有共同 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
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