2

我有下表调用user_pin_tags了以下数据,我需要查询并显示不同的标签和每个标签的计数:

| user_id | pin_id | tag_id |
+---------+--------+--------+
    1     |   34   |   7
    2     |   34   |   7
    3     |   34   |   15   
    4     |   34   |   16   
    5     |   34   |   16   
    6     |   34   |   16   

现在我正在使用以下查询来获取不同的 tag_ids

SELECT DISTINCT tag_id
FROM user_pin_tags
WHERE pin_id =  34

结果如下:

| tag_id |
+--------+
    7
    15
    16

我需要修改此查询以提供不同的 tag_id 以及该 pin_id 中的计数,因此我想生成此结果集:

| tag_id | count |
+--------+-------+
    7    |   2
    15   |   1
    16   |   3

如何修改此查询以实现此目的?

4

3 回答 3

3

使用COUNT(*)GROUP BY

SELECT tag_id, COUNT(*) AS total
FROM user_pin_tags
WHERE pin_id =  34
GROUP BY tag_id
于 2012-12-10T19:49:24.140 回答
2
SELECT 
   DISTINCT(tag_id)
   ,count(pin_id)
FROM user_pin_tags
WHERE pin_id =  34
GROUP BY tag_id

Group By 应该这样做......我认为。

http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html

于 2012-12-10T19:50:10.063 回答
1

您可以按 tag_id 分组:

SELECT tag_id, COUNT(pin_id)
FROM user_pin_tags
WHERE pin_id =  34
GROUP BY tag_id
于 2012-12-10T19:50:00.700 回答