簡體   English   中英

如何獲取字段計數Mysql

[英]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

一個要測試的SQLfiddle

假設您希望關系計數在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM