【问题标题】:MySQL A Search, A Select of multiple rows, Joining and all in one queryMySQL A Search、A Select of multiple rows、Joining 和 all in one query
【发布时间】:2010-09-23 14:34:57
【问题描述】:

我首先对表格标签进行搜索,结果是所有行连同来自表格链接的附加数据一起返回(我在其上进行连接)。表格标签的工作方式是,对于自动 _id 可以有多行(每行 1 个标签,因此多个标签是多行)。

我想要做的是,而不是仅仅获取与自动 _id 和查询匹配的多行。我想为在 1 行中找到的每个 auto_id 取回每个标签(某种形式的不同但将所有标签逗号分隔在 1 个字段中),因此 group_concat (这显然目前不起作用 - 我'已将其添加为伪)。

SELECT ta.auto_id, li.address, li.title, GROUP_CONCAT(SELECT tag FROM tags WHERE auto_id = ta.auto_id)
FROM `tags` AS ta
JOIN
links AS li
ON ta.auto_id = li.auto_id
GROUP BY ta.tag
WHERE ta.user_id = 1
AND (ta.tag LIKE '%query%')

我希望我已经说明了我的情况。

非常感谢,

【问题讨论】:

    标签: mysql


    【解决方案1】:

    如果我明白你在问什么,这样的事情应该可以解决问题:

    SELECT ta.auto_id, li.address, li.title, GROUP_CONCAT(ta.tag) -- Get a comma separated list of all the tags
    FROM tags AS ta
    INNER JOIN links AS li ON ta.auto_id = li.auto_id
    WHERE ta.user_id = 1
    AND ta.tag LIKE '%query%'
    GROUP BY li.id -- Group by links id, so you get one row for each link, which contians a list of tags
    

    【讨论】:

    • 嗨罗博格!非常感谢 - 这让我非常接近,但其中有一小部分可能是不可能的,即获取与查询不匹配的 auto_id 的标签。因此,如果 1 个标签匹配而其他标签不匹配,它仍应获取 auto_id 的标签。
    猜你喜欢
    • 1970-01-01
    • 2022-12-02
    • 1970-01-01
    • 1970-01-01
    • 2022-12-01
    • 2022-12-01
    • 1970-01-01
    • 2011-04-13
    • 2022-12-27
    相关资源
    最近更新 更多