在mysql语句中加入Count for Count

时间:2016-07-25 15:24:40

标签: mysql

SQL Fiddle

我有三个db表,我想从song_tag表中选择10个最常用的标签,我可以使用下面的sql查询

SELECT `tag_id`, 
COUNT(`tag_id`) AS `value_occurrence` 
FROM `song_tag`
GROUP BY `tag_id`
ORDER BY `value_occurrence` DESC 
LIMIT 10;

我如何从同一查询中的tags表中获取标记名称值?它甚至可能吗?我已经设置了一些虚拟数据以及需要的三个表格。(链接在帖子的顶部)。

这将用于wordpress wpdb查询。我不认为还有很多关于配置设置,语言等的补充。

2 个答案:

答案 0 :(得分:1)

您需要将标记表加入到结果中。如下所示:

SELECT s.tag_id, COUNT(s.tag_id) AS value_occurrence, t.name
FROM song_tag s LEFT JOIN tags t
    ON s.tag_id = t.id
GROUP BY s.tag_id
ORDER BY value_occurrence DESC
LIMIT 10;

答案 1 :(得分:1)

在此回答您的评论,以便我可以格式化。

我个人不知道如何用歌曲将所有标签放在一行中,但是,我们可以创建一个SELECT语句,将所有标签与不同行中的歌曲相关联。它看起来像

SELECT s.title, t.name
FROM songs s LEFT JOIN song_tag st
    ON s.id = st.song_id
LEFT JOIN tags t
    ON st.tag_id = t.id
WHERE s.id = "123";