[英]How to get field count Mysql
問題標題是感覺,我知道。 但我的問題似乎難以解釋。
我有一個像phpmyadmin一樣的表
+-----+-----+----
| id |tag |item|
+=====+=====+===
| 1 | 1 | 132|
+-----+-----+---
| 2 | 2 | 132|
+-----+-----+---
| 3 | 2 | 134|
+-----+-----+---
| 4 | 1 | 135|
+-----+-----+---
我想找到相關物品的數量。
例如,item-132具有1,2個標簽值,而item-134具有2個標簽值。 item-132和item-134具有相同的2個標記值。 SO item-132和item-134有一個相關標簽。
我想得到像這樣的關系標簽......
如何在MySQL中設置獲取關系標記計數的SQL查詢。
自我加入將幫助您入門:
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
如果標簽每個項目最多只存在一次,則可以使用自聯接;
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
假設您希望關系計數在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 COUNT(*) FROM tt t1
JOIN tt t2 ON t1.tag=t2.tag
WHERE t1.item = 132
AND t2.item = 134;
sqlFiddle這將為您提供相關標簽以及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)
那么如果你想要一個計數,你可以添加COUNT(T1.tag)和GROUP BY item1,item2就像( sqlFiddle )
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.