mysql查询返回相关的行

时间:2014-02-05 17:11:56

标签: mysql

我有一个带字段

的简单mysql表ref_table
node_id
topic_id
ref_id

Ref_id指的是存储的实际对象。可能存在具有相同ref_id的任意数量的行,以及node_id和topic_id的不同组合。 我现在需要检索记录(node_id,ref_id = A)存在的所有不同node_id值,受限于记录存在的约束(NODE_ID,TOPIC_ID,ref_id = A) - 其中NO​​DE_ID和TOPIC_ID是我的变量参数。 换句话说,我试图找到具有NODE_ID和TOPIC_ID特定组合的所有对象,然后返回该对象出现的所有节点。看起来很简单,但我无法绕过查询语法来完成它。如果查询返回NODE_ID本身就没问题。

如果查询可以返回node_id的列表以及找到node_id匹配的次数,那就更好了。

2 个答案:

答案 0 :(得分:1)

试试这个:

SELECT r2.node_id, COUNT(*) AS c
FROM ref_table r1
    INNER JOIN ref_table r2 ON r1.ref_id = r2.ref_id
WHERE r1.node_id = [node]
    AND r1.topic_id = [topic]
GROUP BY r2.node_id;

答案 1 :(得分:0)

这有效:

select node_id, count(*) as c from ref_table 
where topic_id=[topic] 
and node_id in (select distinct node_id from ref_table where node_id=[node] and topic_id=[topic])
group by node_id;