mysql语句中计数的联接查询

mysql语句中计数的联接查询,mysql,Mysql,我有三个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; 然后如何在同一查询中从标记表中获取标记名值?有可能吗?我已经摆弄了一些虚拟数据和所需的三个表(链接在文章顶部) 这将在wordpr

我有三个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;
然后如何在同一查询中从标记表中获取标记名值?有可能吗?我已经摆弄了一些虚拟数据和所需的三个表(链接在文章顶部)


这将在wordpress wpdb查询中使用。我认为关于配置设置、语言等方面没有太多其他需要添加的内容。

您需要将标签表加入到结果中。比如:

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;

在这里回答您的评论,以便我可以格式化

我个人不知道如何将所有标签与歌曲放在一行中,但是,我们可以创建一个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";

嗨,布兰登,这真是个好主意,谢谢你。必须等待接受答案,但出于好奇@BrandonM我如何根据id选择一首歌曲,并在一个查询中获取和一首歌曲相关的所有标签?是的,我不确定是否可以在一行中获取所有标签。谢谢你在这方面的帮助。我似乎记得这是可能的?只是不知道怎么做。有一种伪方法可以做到这一点。但没有创建多个列。