如何获取字段计数Mysql

如何获取字段计数Mysql,mysql,sql,Mysql,Sql,问题的标题是senseles,我知道。但我的问题似乎难以解释 我有一张这样的一张桌子 +-----+-----+---- | id |tag |item| +=====+=====+=== | 1 | 1 | 132| +-----+-----+--- | 2 | 2 | 132| +-----+-----+--- | 3 | 2 | 134| +-----+-----+--- | 4 | 1 | 135| +-----+-----+--- 我想找到相关项目的数量 例如,项

问题的标题是senseles,我知道。但我的问题似乎难以解释

我有一张这样的一张桌子

+-----+-----+----
| id |tag |item|
+=====+=====+===
| 1 |  1  | 132|
+-----+-----+---
| 2 |  2  | 132|
+-----+-----+---
| 3 |  2  | 134|
+-----+-----+---  
| 4 |  1  | 135|
+-----+-----+---
我想找到相关项目的数量

例如,项目132有1,2个标记值,项目134有2个标记值。项目132和项目134具有相同的2标签值。因此项目132和项目134有一个相关标签

我想让关系标签像这样计数


如何设置在MySQL中获取关系标记计数的SQL查询。

假设您希望关系计数介于132和134之间,您可能需要考虑

SELECT COUNT(*) AS relcount
FROM tablename AS aa
INNER JOIN tablename AS bb ON aa.tag=bb.tag
WHERE aa.item=132
AND bb.item=134

自动加入将使您开始:

select t1.item item1, t2.item item2, etc
from table t1 join table t2 on t1.item <> t2.item
and t1.tag = t2.tag
where whatever
选择t1.item项目1、t2.item项目2等
从表t1连接t1.item t2.item上的表t2
和t1.tag=t2.tag
在哪里

如果每个项目最多只存在一次标记,则可以使用自连接

SELECT t2.item, COUNT(t2.id) cnt
FROM mytable t1 
JOIN mytable t2 
  ON t1.tag=t2.tag AND t1.item<>t2.item
WHERE t1.item = 132
GROUP BY t2.item
选择t2.item,计数(t2.id)cnt
来自MyTableT1
联接我的表t2
在t1.tag=t2.tag和t1.itemt2.item上
其中t1.item=132
按项目分组
.

您可以执行以下操作:

SELECT COUNT(*) FROM tt t1 
JOIN tt t2 ON t1.tag=t2.tag 
WHERE t1.item = 132 
AND t2.item = 134;
这将为您提供相关标记以及item1和item2(具有此相关标记的项目)

然后,如果需要计数,可以添加计数(T1.tag)并按item1、item2进行分组,如()


你能举一个期望输出的例子吗?我发现这个问题有点难理解。重复的项目是一个打字错误?谢谢你,欧根。它非常有用。
SELECT T1.tag,T1.item as item1,T2.item as item2
FROM yourTable T1
INNER JOIN yourTable T2
ON (T1.tag = T2.tag AND T2.item > T1.item)
SELECT COUNT(T1.tag) as relatedCount,T1.item as item1,T2.item as item2
FROM yourTable T1
INNER JOIN yourTable T2
ON (T1.tag = T2.tag AND T2.item > T1.item)
GROUP BY item1,item2