MySQL A Search,A选择多行,Joining和all in one query

时间:2008-11-22 14:41:53

标签: mysql

我首先在表标签上进行搜索,这会导致返回的所有行以及表链接中的附加数据(我在其上进行连接)。表标签的工作原理是,对于auto _id,可以有多行(每行1个标签,因此多个标签是多行)。

我想要做的是,而不是只返回与auto _id和查询匹配的多行。我希望为每个找到的auto_id获取每个标记,在1行中(某种形式的不同但是将所有标记以逗号分隔在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%')

我希望我的案子清楚。

非常感谢,

1 个答案:

答案 0 :(得分: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