0

我有下表和附加的列。

tags
 -t_id (PRIMARY)
 -pg
tag_refs
 -t_id
 -bp_id

现在我尝试编写一个 MySQL 查询,它返回按受欢迎程度排序的标签总数 - 在这种情况下,这意味着唯一 t_id 在 tag_refs 表中表示的次数。

我假设这将是一个联合查询,它必须从标签表中返回一个列表,我可以在其中使用 pg 列仅输出每个标签的名称/标题一次,按使用最多的排序。

我尝试了以下查询,它只返回一行,但似乎是按我想要的顺序排列的。

SELECT *
FROM tags
JOIN tag_refs ON tags.t_id = tag_refs.t_id
ORDER BY COUNT(tag_refs.t_id) DESC
4

2 回答 2

3

您应该像这样在 SELECT 中进行聚合:

SELECT tags.pg, COUNT(tag_refs.t_id) AS tag_count
FROM tags INNER JOIN tag_refs ON tags.t_id = tag_refs.t_id
GROUP BY tag.pg
ORDER BY tag_count DESC
于 2013-01-11T18:00:27.117 回答
2

你缺少Group by条款

SELECT 
tag_refs.t_id,  COUNT(tag_refs.t_id) 
FROM 
    tags 
JOIN 
    tag_refs 
ON 
    tags.t_id = tag_refs.t_id 
group by tag_refs.t_id
ORDER BY 
    COUNT(tag_refs.t_id) 
DESC

在此处阅读有关此条款的一些信息

于 2013-01-11T17:59:39.157 回答