用于获取计数和不同的SQL查询

时间:2012-12-10 19:48:00

标签: mysql sql

我有一个名为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_ids以及该pin_id中的计数,因此我想生成此结果集:

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

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

3 个答案:

答案 0 :(得分:3)

使用COUNT(*) and GROUP BY

SELECT tag_id, COUNT(*) AS total
FROM user_pin_tags
WHERE pin_id =  34
GROUP BY tag_id

答案 1 :(得分: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

答案 2 :(得分:1)

您可以按tag_id进行分组:

SELECT tag_id, COUNT(pin_id)
FROM user_pin_tags
WHERE pin_id =  34
GROUP BY tag_id