【问题标题】:Join Query for Count in mysql statement在 mysql 语句中加入 Count 查询
【发布时间】:2016-11-29 00:43:36
【问题描述】:

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;

然后我将如何从同一查询中的标签表中获取标签名称值?甚至可能吗?我已经用一些虚拟数据和所需的三个表设置了一个小提琴。(链接在帖子顶部)。

这将在 wordpress wpdb 查询中使用。我认为关于配置设置、语言等方面没有太多可补充的。

【问题讨论】:

    标签: mysql


    【解决方案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;
    

    【讨论】:

    • 嗨,布兰登,谢谢你。必须等待接受答案,但会
    • 只是出于好奇@BrandonM 我将如何根据 id 选择一首歌曲并在一次查询中获取与一首歌曲关联的所有标签?
    【解决方案2】:

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

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

    【讨论】:

    • 是的,我不确定是否可以将所有标签放在一行中。感谢您的帮助。
    • 我好像记得有可能?只是不确定如何。
    • stackoverflow.com/questions/1067428/… 有一种伪方法可以做到这一点。但不会创建多个列。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多