我有一个带字段
的简单mysql表ref_tablenode_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) - 其中NODE_ID和TOPIC_ID是我的变量参数。 换句话说,我试图找到具有NODE_ID和TOPIC_ID特定组合的所有对象,然后返回该对象出现的所有节点。看起来很简单,但我无法绕过查询语法来完成它。如果查询返回NODE_ID本身就没问题。
如果查询可以返回node_id的列表以及找到node_id匹配的次数,那就更好了。
答案 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;